Відгуки про книгу досконалий код
Правильно буде почати не з книжки, а з себе. Я не гуру. За плечима маю довгий айтішной досвід, але власне розробкою ПЗ - вимушено на різних мовах - займаюся близько півтора років. Кажу це для того, щоб було зрозуміло: я - з таргет-групи, книга написана для мене.
Мало хто мене дратує, як Арістотель. А Макконнелл його дуже любить і нав'язливо цитує: поганий знак - від таких інтелектуалів треба бігти. Цей грек - дурний і злий - придумав рушійну силу для фізиків, флогистон для хіміків і навіть програмістам напаскудив через товщу століть. Розмірковуючи не так давно про ООП я зрозумів, що саме через Аристотеля воно працює зі скрипом. Світ є сукупність фактів, а не речей. Якщо почитати Віттгенштейна, все встає на місця, і срібна куля - ось вона. Чи не річ треба ставити на вершину ієрархії, а операцію-дію. Це тема для іншого тексту: треба його все-таки написати, може, для Хабра.
От саме цитата з Макконнелла на філософську тему:
Прекрасний приклад абстрактного об'єкта, який не існує в реальному світі, - Shape (фігура). Об'єкти Circle (коло) і Square (прямокутник) існують насправді, тоді як клас Shape - це абстракція конкретних фігур.
Рекомендації з конструювання діляться на самоочевидні і спірні:
Насторожено ставитеся до класів, що містить більше семи елементів даних-членів.
Якщо клас має тільки дані, але не форми поведінки, запитайте себе, чи дійсно це клас. Можливо, цей клас слід розжалувати, зробивши його дані-члени атрибутами одного або декількох інших класів.
(Позбавляємося від дата-класів?)
Уникайте слів, при написанні яких люди часто припускаються помилок.
(Програміст повинен бути ще і лінгвістом-психологом? Або мова про те, що краще придумати синонім, якщо є сумніви? Мовляв, пиши флюкончік і лягай спати?)
Розділ про оператори, навпаки, так само безперечний і непотрібний. Макконннелл радить: якщо ви пишете if-then. то, можливо, вам варто написати ще і else. тому що британські вчені встановили, що в 68.5% відсотках випадків, він теж вам знадобиться.
Дуже хороший приклад Макконнелл призводить з цим же оператором в розділі про циклах:
goto Start:
while (exptession) // Робимо щось
Start:
// Робимо щось ще
>
Цікава глава про форматування коду. Одні люди переносять фігурну дужку:
Інші не переносять:
Як краще? Макконнелл вважає, що ніякої різниці немає. Але 40 сторінок доведеться прочитати.