Когда-то я думал, что пишу довольно хороший PHP-код. Пока не прочитал Макконнела и его «Совершенный код». Я понял, что нужно делать «ребут» и «очищаться». И практически достиг свечения ауры но… этого оказалось мало. Окружающий (PHP) мир упорно не хотел становится «чище и добрее» вместе со мной. И вот я пишу эти буквы в надежде найти ответы на вопросы.
Качество кода, как и качество товара — это совокупность свойств, обуславливающих способность товара (кода) удовлетворить запросы людей. То есть все более или менее понятно: есть код, есть люди, которым этот код нужен, у кода есть свойства которые делают людей счастливее или несчастнее. Дальше этого, по-моему, ходить и выискивать философские аспекты, не стоит. Все, что нужно сделать, это разобраться, кто же такие эти «люди» и какие свойства есть у кода.
Многие делают ошибку здесь, говоря что эти люди — это заказчики. Вот это — самая большая ошибка в этой теме. Заказчикам нужен продукт, код их вообще не интересует. Код нужен только программистам. Хотя для PHP есть нюанс. Если в C++ клиенту в руки попадает скомпилированный модуль, то в PHP — тот самый код. И нередко заказчик хочет, чтобы другие программисты (или даже он сам) смогли изменять этот код без труда. Но снова в этом случае мы говорим о том же — код нужен программистам. Люди — это программисты.
С этим разобраться гораздо сложнее. Есть огромное количество теории на это счет но хотелось бы принять во внимание лишь самые явные аспекты. Чем же и как код может удовлетворить программиста? А вот попробуйте ответить сами на этот вопрос. Я же отвечу сам за себя:
Что под этим подразумевается?
*список не полный
Что же это получается? А получается, что для качественного кода нужны:
а) порядок и дисциплина;
б) образование;
Вот пожалуй и все. Вернее пункт б стОит поставить на первое место. И если с порядком и дисциплиной еще можно что-то поделать (каждая уважающая себя команда) то вот с образованием, по-моему, все гораздо сложнее. По крайней мере в Минске. Программисты, которые считают себя «профи» зачастую не знают что такое throw и assert() а познания шаблонов проектирования ограничивается сингельтоном.
И вот тут у меня действительно возникают вопросы без ответов:
Где же адекватные программисты? Неужели все разъезжаются? А если их не было, то неужели у нас ничему не учат? А если у нас ничему не учат, то как же нам продвигаться к «светлому будущему»?
Что есть «качество кода»?
Качество кода, как и качество товара — это совокупность свойств, обуславливающих способность товара (кода) удовлетворить запросы людей. То есть все более или менее понятно: есть код, есть люди, которым этот код нужен, у кода есть свойства которые делают людей счастливее или несчастнее. Дальше этого, по-моему, ходить и выискивать философские аспекты, не стоит. Все, что нужно сделать, это разобраться, кто же такие эти «люди» и какие свойства есть у кода.
Люди
Многие делают ошибку здесь, говоря что эти люди — это заказчики. Вот это — самая большая ошибка в этой теме. Заказчикам нужен продукт, код их вообще не интересует. Код нужен только программистам. Хотя для PHP есть нюанс. Если в C++ клиенту в руки попадает скомпилированный модуль, то в PHP — тот самый код. И нередко заказчик хочет, чтобы другие программисты (или даже он сам) смогли изменять этот код без труда. Но снова в этом случае мы говорим о том же — код нужен программистам. Люди — это программисты.
Свойства кода
С этим разобраться гораздо сложнее. Есть огромное количество теории на это счет но хотелось бы принять во внимание лишь самые явные аспекты. Чем же и как код может удовлетворить программиста? А вот попробуйте ответить сами на этот вопрос. Я же отвечу сам за себя:
я хочу не напрягаться для того, чтобы понять, как работает код, на который я смотрю
Что под этим подразумевается?
- «приятно глазу» — то есть используется редактор с хорошим шрифтом, с подсветкой синтаксиса и не нужна вертикальная прокрутка;
- форматирование кода не вызывает внутренних конфликтов (код написан в той же «религии» что и моя — фигурные скобки, отступы, if-else-ы и т.п.);
- адекватно названы переменные и функции;
- используются понятные мне шаблоны проектирования и алгоритмы;
- код «отвечает» на вопрос «а что если...?» — то есть обрабатываются ошибки и исключения;
*список не полный
Что же это получается? А получается, что для качественного кода нужны:
а) порядок и дисциплина;
б) образование;
Вот пожалуй и все. Вернее пункт б стОит поставить на первое место. И если с порядком и дисциплиной еще можно что-то поделать (каждая уважающая себя команда) то вот с образованием, по-моему, все гораздо сложнее. По крайней мере в Минске. Программисты, которые считают себя «профи» зачастую не знают что такое throw и assert() а познания шаблонов проектирования ограничивается сингельтоном.
И вот тут у меня действительно возникают вопросы без ответов:
Где же адекватные программисты? Неужели все разъезжаются? А если их не было, то неужели у нас ничему не учат? А если у нас ничему не учат, то как же нам продвигаться к «светлому будущему»?