Легко міркувати - це культурологічний термін, саме тому так важко придумати конкретні приклади. Це термін, прикріплений до людей, які повинні робити міркування.
"Легко міркувати про" - насправді дуже самоописова фраза. Якщо хтось дивиться на код і хоче пояснити, що він робить, це легко =)
Гаразд, розбиваючи це. Якщо ви дивитесь на код, зазвичай хочете, щоб він щось робив. Ви хочете переконатися, що він робить те, що, на вашу думку, має робити. Таким чином, ви розробляєте теорії того, що повинен робити код, і тоді ви міркуєте про це, щоб спробувати аргументувати, чому код дійсно працює. Ви намагаєтесь думати про код як людський (а не як комп'ютер) і намагаєтесь раціоналізувати аргументи щодо того, що може зробити код.
Найгірший випадок для "простого розуму" - це коли єдиний спосіб зрозуміти те, що робить код, - це проходити по черзі через код, як машина Тьюрінга для всіх входів. У цьому випадку єдиний спосіб що- небудь міркувати про код - перетворити себе на комп’ютер і виконати його в голові. Ці найгірші приклади легко помітити в ослаблених конкурсах програмування, таких як три рядки PERL, які розшифровують RSA:
#!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1
lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/)
Що стосується простого міркування, знову ж таки, термін є висококультурним. Ви повинні врахувати:
- Якими навичками володіє ресаунер? Скільки досвіду?
- Які запитання можуть мати у кодового питання про код?
- наскільки певним повинен бути ренаунер?
Кожен із них по-різному впливає на "легко міркувати". Візьмемо для прикладу навички ренаунера. Коли я почав працювати в своїй компанії, мені рекомендували розробити свої сценарії в MATLAB, тому що це "легко міркувати". Чому? Ну, всі в компанії знали MATLAB. Якби я вибрав іншу мову, мені було б важче когось зрозуміти. Не забувайте, що читабельність MATLAB загрожує деяким завданням, просто тому, що вона не була призначена для них. Пізніше, по мірі просування моєї кар'єри, Python ставав все більш популярним. Раптом код MATLAB став "важко міркувати", і Python став мовою переваги для написання коду, на яку було легко міркувати.
Також розглянемо, які ідоми може мати читач. Якщо ви можете розраховувати на те, щоб ваш читач розпізнав FFT у певному синтаксисі, код "легше міркувати про", якщо дотримуватися цього синтаксису. Це дозволяє їм дивитись на текстовий файл як на полотно, на яке ви намалювали FFT, а не вникати в солодкі зернисті деталі. Якщо ви використовуєте C ++, дізнайтеся, наскільки читачам комфортно користуватися std
бібліотекою. Наскільки їм подобається функціональне програмування? Деякі ідіоми, що виходять із бібліотек контейнерів, дуже залежать від того, який ідентичний стиль ви віддаєте перевагу.
Також важливо зрозуміти, на які питання читач може зацікавитись. Чи в основному ваші читачі переймаються поверхневим розумінням коду, чи шукають помилок у глибині кишечника?
Наскільки читач певний, насправді цікавий. У багатьох випадках туманних міркувань насправді достатньо, щоб виріб вийшов із дверей. В інших випадках, таких як програмне забезпечення для польотів FAA, читачеві захочеться мати розсудження із залізами. Я зіткнувся з випадком, коли я сперечався за використання RAII для певного завдання, тому що "Ви можете просто встановити його і забути про нього ... це зробить правильно". Мені сказали, що я помилявся з цього приводу. Ті, хто збирався міркувати над цим кодом, не були тими людьми, які "просто хочуть забути про деталі". Для них RAII більше нагадував висячу чаду, змушуючи їх думати про все, що може статися, коли ви вийдете із сфери застосування.