Легко рассуждать - это культурно-специфический термин, поэтому так сложно привести конкретные примеры. Это термин, который привязан к людям, которые должны рассуждать.
«Легко рассуждать» на самом деле очень самоописательная фраза. Если кто-то смотрит на код и хочет рассуждать о том, что он делает, это легко =)
Ладно, сломай это. Если вы смотрите на код, вы обычно хотите, чтобы он что-то сделал. Вы хотите убедиться, что он делает то, что, как вы думаете, он должен делать. Таким образом, вы разрабатываете теории о том, что должен делать код, а затем рассуждаете об этом, пытаясь спорить, почему код действительно работает. Вы пытаетесь думать о коде как о человеке (а не как о компьютере) и пытаетесь рационализировать аргументы о том, что может делать код.
Наихудший случай для «легкого рассуждения» - это когда единственный способ понять, что делает код, - это построчно пройти код, как машина Тьюринга, для всех входных данных. В этом случае единственный способ что-либо объяснить в коде - это превратить себя в компьютер и выполнить его в своей голове. Эти наихудшие примеры легко увидеть в запутанных соревнованиях по программированию, таких как эти 3 строки 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 стал языком предпочтений для написания кода, о котором было легко рассуждать.
Также подумайте, что может быть у читателя. Если вы можете рассчитывать на то, что ваш читатель распознает БПФ в определенном синтаксисе, «проще рассуждать» о коде, если вы будете придерживаться этого синтаксиса. Это позволяет им смотреть на текстовый файл как на холст, на котором вы нарисовали БПФ, вместо того, чтобы вдаваться в мельчайшие детали. Если вы используете C ++, выясните, насколько ваши читатели знакомы с std
библиотекой. Насколько им нравится функциональное программирование? Некоторые идиомы из библиотек контейнеров очень зависят от того, какой стиль вы предпочитаете.
Также важно понимать, на какие вопросы читателю может быть интересно ответить. Ваши читатели в основном озабочены поверхностным пониманием кода или ищут ошибки глубоко в недрах?
Насколько уверен, что читатель должен быть на самом деле интересный. Во многих случаях смутных рассуждений на самом деле достаточно, чтобы вывести продукт за дверь. В других случаях, таких как программное обеспечение полета FAA, читатель захочет иметь железные аргументы. Я столкнулся с делом, в котором приводил доводы в пользу использования RAII для конкретной задачи, потому что «вы можете просто настроить его и забыть об этом ... это будет правильно». Мне сказали, что я был неправ в этом. Те, кто собирался рассуждать по этому коду, не были людьми, которые «просто хотят забыть о деталях». Для них RAII был больше похож на чада, заставляющего их думать обо всем, что может случиться, когда вы покидаете сферу.