Совершенный код
Стив Макконнелл
0
(0)
Это бета-версия LiveLib. Сейчас доступна часть функций, остальные из основной версии будут добавляться постепенно.
Стив Макконнелл
0
(0)

Правильно будет начать не с книжки, а с себя. Я не гуру. За плечами имею долгий айтишный опыт, но собственно разработкой ПО - вынужденно на разных языках - занимаюсь около полутора лет. Говорю это для того, чтобы было понятно: я - из таргет-группы, книга написана для меня.
Жаль, что Стивен Макконнелл не относится к писательству как к конструированию ПО. Он с ужасом пишет, что программистам кое-где (не уточняется, но точно в Индии) платят за код построчно. Есть подозрение, что в американских издательствах компьютерной литературы платят именно так: Совершенный код сомнений в обратном не вызывает. Это даже не тот случай, когда читать книжку для пользы дела нужно по диагонали. Правильный способ такой: до середины читать то, что выделено жирным или большим шрифтом (заголовки), а начиная с пятой части - только большим: там происходит переход на более высокий уровень абстракции и снова все повторяется. Начиная, кстати, с этой 5 части каждая новая глава напоминает введение в какую-то другую книгу - тоже, впрочем, неинтересную. То есть все становится еще хуже, чем было. Хотя казалось, что хуже быть уже не могло.
Семьдесят страниц вводного текста ни о чем напоминают напоминают введение Жака Деррида к Диссеминации , где этот странный - в плохом смысле - мыслитель сомневается в необходимости введения как такового. Две последние главы у Макконнелла - сотня страниц примерно - резюмируют то, что было написано раньше. Это при том, что свое отдельное резюме есть в каждой главе. Вообще, будучи в здравом уме, книгу невозможно прочитать от корки до корки. И пусть ваша читательская совесть будет спокойна, страдать должен Макконнелл. Плюс в том, что он откровенен - и это его главное - как автора - достоинство. Он признает, например, что худший виденный им код написала женщина. Не буду делиться своим опытом и своими мыслями на этот счет, но написать такое в современной Америке требует большой смелости.
Макконнелл многое взял из литературы по мотивации (так вроде называется весь этот говнотрэш про думай-и-богатей?). Очень кстати под конец мелькнула цитата из Карнеги. Книга содержит Тест на готовность руководителя, разделы про психологические аспекты отладки, личность программиста и другие ценные вещи. Утверждается, например, что программист должен быть умным. Это обязательно. Для глупых Макконнелл подготовил специальную подборку книжек по развитию ума.
Мало кто меня раздражает, как Аристотель. А Макконнелл его очень любит и навязчиво цитирует: дурной знак - от таких интеллектуалов надо бежать. Этот грек - глупый и злобный - придумал движущую силу для физиков, флогистон для химиков и даже программистам нагадил через толщу веков. Размышляя не так давно об ООП я понял, что именно из-за Аристотеля оно работает со скрипом. Мир есть совокупность фактов, а не вещей. Если почитать Виттгенштейна, все встает на места, и серебряная пуля - вот она. Не вещь надо ставить на вершину иерархии, а операцию-действие. Это тема для другого текста: надо его все-таки написать, может, для Хабра.
Вот как раз цитата из Макконнелла на философскую тему:
Уж не знаю, встречал ли Аристотель в реальном мире окружность и прямоугольник (square?), но у автора есть определенные проблемы на уровне базы (не данных).
Рекомендации по конструированию делятся на самоочевидные и спорные:
(очевидно, автор никогда не моделировал производственные процессы, где объекты обладают множеством характеристик, одни из которых участвуют в логике, другие нужны просто для учета - я, например, не вижу смысла резать такой объект и таблицу поперек, код от этого проще не станет)
(избавляемся от дата-классов?)
(программист должен быть еще и лингвистом-психологом? или речь о том, что лучше придумать синоним, если есть сомнения? мол, пиши флюкончик и ложись спать?)
Об исключениях автор говорит, что на высоком уровне абстракции лучше показать Data not available, чем Disk is not ready. Вопрос: для кого лучше? Кому такое исключение упростит жизнь? Снизить степень вложенности автор советует путем замены else if на case. А в качестве эффективного метода отладки предлагает спроектировать и переписать программу с нуля
Раздел про операторы, напротив, равно бесспорный и ненужный. Макконннелл советует: если вы пишете if-then, то, возможно, вам стоит написать еще и else, потому что британские ученые установили, что в 68.5% процентах случаев, он тоже вам пригодится.
Раздел про оператор goto на 15 страницах - просто шедевр. Вспомнилась статья Пьера Менара из рассказа Борхеса о возможности обогатить игру в шахматы, устранив одну из ладейных пешек. Менар предлагает, рекомендует, обсуждает и в конце концов отвергает это новшество.
Очень хороший пример Макконнелл приводит с этим же оператором в разделе о циклах:
Говорит, так нельзя делать. Входить в циклы надо правильно. Вообще Макконнелл не утруждает себя поиском и разбором каких-то типичных ошибок. Из его примеров плохого можно составить пособие по экстравагантному говнокодированию: лучше писать if ( a > b ) - говорит автор, - чем if ( (a > b) == true ).
Интересна глава про форматирование кода. Одни люди переносят фигурную скобку:
If ( ... )
{
......
}
Другие не переносят:
Как лучше? Макконнелл считает, что никакой разницы нет. Но 40 страниц придется прочитать.
Из всего объема (за вычетом предисловий и послесловий к послесловиям) процентов пять, наверное, имеют ценность. Меня, например, заставила задуматься главка о семантическом сопряжении, которое я учитывал только подсознательно. Ну и глава про инструментарий оказалась полезной. О некоторых штуках я действительно не слышал. Вообще, жаль немного, что Макконнелл обошелся со своим опытом и желанием этим опытом поделиться столь безобразно. Он мог написать большую статью, например, и эта статья вошла бы во все хрестоматии, потому что упорядочить правила хорошего кодирования многого стоит. Пожалел я немного и о потраченном времени (хотя его всего считанные часы, потому что книжка пустая) и о деньгах (не немного, нормально). 840 рублей заплатил я на Озоне за этого Наполеона-Хилла-для-программистов.
Это бета-версия LiveLib. Сейчас доступна часть функций, остальные из основной версии будут добавляться постепенно.
Стив Макконнелл
0
(0)

Правильно будет начать не с книжки, а с себя. Я не гуру. За плечами имею долгий айтишный опыт, но собственно разработкой ПО - вынужденно на разных языках - занимаюсь около полутора лет. Говорю это для того, чтобы было понятно: я - из таргет-группы, книга написана для меня.
Жаль, что Стивен Макконнелл не относится к писательству как к конструированию ПО. Он с ужасом пишет, что программистам кое-где (не уточняется, но точно в Индии) платят за код построчно. Есть подозрение, что в американских издательствах компьютерной литературы платят именно так: Совершенный код сомнений в обратном не вызывает. Это даже не тот случай, когда читать книжку для пользы дела нужно по диагонали. Правильный способ такой: до середины читать то, что выделено жирным или большим шрифтом (заголовки), а начиная с пятой части - только большим: там происходит переход на более высокий уровень абстракции и снова все повторяется. Начиная, кстати, с этой 5 части каждая новая глава напоминает введение в какую-то другую книгу - тоже, впрочем, неинтересную. То есть все становится еще хуже, чем было. Хотя казалось, что хуже быть уже не могло.
Семьдесят страниц вводного текста ни о чем напоминают напоминают введение Жака Деррида к Диссеминации , где этот странный - в плохом смысле - мыслитель сомневается в необходимости введения как такового. Две последние главы у Макконнелла - сотня страниц примерно - резюмируют то, что было написано раньше. Это при том, что свое отдельное резюме есть в каждой главе. Вообще, будучи в здравом уме, книгу невозможно прочитать от корки до корки. И пусть ваша читательская совесть будет спокойна, страдать должен Макконнелл. Плюс в том, что он откровенен - и это его главное - как автора - достоинство. Он признает, например, что худший виденный им код написала женщина. Не буду делиться своим опытом и своими мыслями на этот счет, но написать такое в современной Америке требует большой смелости.
Макконнелл многое взял из литературы по мотивации (так вроде называется весь этот говнотрэш про думай-и-богатей?). Очень кстати под конец мелькнула цитата из Карнеги. Книга содержит Тест на готовность руководителя, разделы про психологические аспекты отладки, личность программиста и другие ценные вещи. Утверждается, например, что программист должен быть умным. Это обязательно. Для глупых Макконнелл подготовил специальную подборку книжек по развитию ума.
Мало кто меня раздражает, как Аристотель. А Макконнелл его очень любит и навязчиво цитирует: дурной знак - от таких интеллектуалов надо бежать. Этот грек - глупый и злобный - придумал движущую силу для физиков, флогистон для химиков и даже программистам нагадил через толщу веков. Размышляя не так давно об ООП я понял, что именно из-за Аристотеля оно работает со скрипом. Мир есть совокупность фактов, а не вещей. Если почитать Виттгенштейна, все встает на места, и серебряная пуля - вот она. Не вещь надо ставить на вершину иерархии, а операцию-действие. Это тема для другого текста: надо его все-таки написать, может, для Хабра.
Вот как раз цитата из Макконнелла на философскую тему:
Уж не знаю, встречал ли Аристотель в реальном мире окружность и прямоугольник (square?), но у автора есть определенные проблемы на уровне базы (не данных).
Рекомендации по конструированию делятся на самоочевидные и спорные:
(очевидно, автор никогда не моделировал производственные процессы, где объекты обладают множеством характеристик, одни из которых участвуют в логике, другие нужны просто для учета - я, например, не вижу смысла резать такой объект и таблицу поперек, код от этого проще не станет)
(избавляемся от дата-классов?)
(программист должен быть еще и лингвистом-психологом? или речь о том, что лучше придумать синоним, если есть сомнения? мол, пиши флюкончик и ложись спать?)
Об исключениях автор говорит, что на высоком уровне абстракции лучше показать Data not available, чем Disk is not ready. Вопрос: для кого лучше? Кому такое исключение упростит жизнь? Снизить степень вложенности автор советует путем замены else if на case. А в качестве эффективного метода отладки предлагает спроектировать и переписать программу с нуля
Раздел про операторы, напротив, равно бесспорный и ненужный. Макконннелл советует: если вы пишете if-then, то, возможно, вам стоит написать еще и else, потому что британские ученые установили, что в 68.5% процентах случаев, он тоже вам пригодится.
Раздел про оператор goto на 15 страницах - просто шедевр. Вспомнилась статья Пьера Менара из рассказа Борхеса о возможности обогатить игру в шахматы, устранив одну из ладейных пешек. Менар предлагает, рекомендует, обсуждает и в конце концов отвергает это новшество.
Очень хороший пример Макконнелл приводит с этим же оператором в разделе о циклах:
Говорит, так нельзя делать. Входить в циклы надо правильно. Вообще Макконнелл не утруждает себя поиском и разбором каких-то типичных ошибок. Из его примеров плохого можно составить пособие по экстравагантному говнокодированию: лучше писать if ( a > b ) - говорит автор, - чем if ( (a > b) == true ).
Интересна глава про форматирование кода. Одни люди переносят фигурную скобку:
If ( ... )
{
......
}
Другие не переносят:
Как лучше? Макконнелл считает, что никакой разницы нет. Но 40 страниц придется прочитать.
Из всего объема (за вычетом предисловий и послесловий к послесловиям) процентов пять, наверное, имеют ценность. Меня, например, заставила задуматься главка о семантическом сопряжении, которое я учитывал только подсознательно. Ну и глава про инструментарий оказалась полезной. О некоторых штуках я действительно не слышал. Вообще, жаль немного, что Макконнелл обошелся со своим опытом и желанием этим опытом поделиться столь безобразно. Он мог написать большую статью, например, и эта статья вошла бы во все хрестоматии, потому что упорядочить правила хорошего кодирования многого стоит. Пожалел я немного и о потраченном времени (хотя его всего считанные часы, потому что книжка пустая) и о деньгах (не немного, нормально). 840 рублей заплатил я на Озоне за этого Наполеона-Хилла-для-программистов.
Ваш комментарий
, чтобы оставить комментарий.
Комментарии 4
Ваш комментарий
, чтобы оставить комментарий.