вторник, 20 октября 2009 г.

[comp.prog.thoughts] У чтения хорошего кода есть большая проблема

Возвращусь к цитате из интервью Брайана Кернигана о чтении чужого кода:

Чтение чужого кода так же бесценно. Конечно, это подразумевает, что код хорош; я не вижу много пользы от чтения больших объемов плохого кода, разве что научиться не писать так.

Первоначально я перевел ее неправильно, указав, что чтение чужого кода не имеет ценности. По двум причинам:

  • ошибочно решив, что invaluable переводится как “не имеющий практической ценности”, вместо “бесценный”;
  • с чтением хорошего кода связана очень большая проблема.

Я подумал, что Керниган как раз намекает на эту проблему, поэтому-то и не предает значения чтению кода, потому не заглянул в словарь для точного перевода invaluable. :(

Так что же это за проблема такая? Может быть, это отсутствие хорошего кода? Нет. Хороший код встречается, и не так уж редко.

Главная проблема с хорошим кодом в том, что на него не обращаешь внимания. Ведь зачем программисту приходится читать чужой код? Не для того же, чтобы узнать, сколько пробелов используется в отступах (ну такое бывает, но крайне редко). Я читаю чужой код, чтобы понять, как в нем делаются конкретные вещи. Например, как организуется учет тайм-аутов при получении ответа SMTP сервера. Или как формируют HTTP-заголовки в SOAP запросе. Я ищу в коде решение конкретной задачи. И чем проще это решение найти, чем меньше я продираюсь сквозь код, тем код лучше. А вот с плохим кодом ситуация обратная: при попытке найти в коде суть решения основные усилия тратятся на борьбу с кодом. Плохой код, в отличии от хорошего, виден сразу.

Такие вот дела. Пожалуй, я не соглашусь с Керниганом. Чтение хорошего кода не очень полезно, т.к. можно даже не обратить внимание на то, насколько код хорош.

Чтение плохого кода так же не имеет большого смысла – ведь важно не столько понять, что код плох (это не сложно), и даже не почему он плох (это сложнее, в особенности, если приходится свои выводы оформлять для результатов code review). Самое сложное с плохим кодом – это понять, как же не писать такой код. А понять это – это научиться писать хороший код… Опаньки, а круг-то замкнулся… :)

Отправить комментарий