Kodomo

Пользователь

Как писать чистый код

Можно, наверное, сказать, что программиста от человека, который знает несколько алгоритмов и язык программирования, отличает не так уж много: привычка следовать одному стилю кодирования, привычка хранить код в репозитории, навык отлаживания программы по частям, привычка оценивать программные конструкции с точки зрения безопасности и эффективности и приверженность к одной из нескольких программистских религий.

В религиях, конечно, ничего хорошего нет (хотя сгореть должны синим пламенем все приверженцы закрытого кода, платы за копирование данных и ограничение доступа безобидного хакера к его собственному компьютеру). Вопросы эффективности и безопасности на самом деле очень тонкие (есть такое популярное утверждение под названием "first rule of optimization": don't do it) но, в конце концов, им можно научиться методом проб и ошибок. В отлаживании программы по частям ничего сложного нету и навык появится сам собой, как только вам придётся писать что-то большое, а до тех пор он и не понадобится. Поэтому в этом курсе мы ограничиваемся двумя простыми, но полезными вещами: стилем кодирования и работой с репозиторием. В этом тексте – только стилем кодирования.

Хороший стиль кодирования складывается из нескольких составляющих:

Все эти вещи кажутся направленными исключительно на одну цель: чтобы глаз радовался, когда смотрит на код. В сущности, так оно и есть, но важно понимать и то, что когда глаз радуется, он гораздо быстрее выделяет то, что важно.

Сравните:

   1 def faibosuu_en_wo_waridasu( en):
   2         """
   3         
   4         ファイボウナチ数を割り出す """
   5         # イニットをする
   6         a=1;tsugi = 1
   7         for ITERATOR in \
   8         range (en ):
   9                 accumulator_VARiable = a;a=a+tsugi;tsugi =a + accumulator_VARiable
  10         # ここに数を割り出しただろう
  11         # リタノをしましょうかなあ
  12         # pythonは素晴らしい!
  13         return tsugi

   1 def fib(n):
   2         """ Return n-th Fibonacci number.
   3 
   4         Examples:
   5         >>> fib(6)
   6         8
   7         >>> fib(10)
   8         55
   9         """
  10         a = b = 1
  11         for i in range(n-2):
  12                 t = a
  13                 a = b
  14                 b = a + t
  15         return b

Оформление кода

....