Aug 02, 2013 23:24
Michael Feathers тем временем пишет в книге дядюшки Боба, что возвращать коды ошибок и кидать checked исключения плохо, а нужно использовать unchecked исключения, и приводит в пример C++, C#, руби и питон. (Скала и котлин тоже продолжают славную традицию.) Так же плохо возвращать null или передавать его в качестве параметра.
Сам Роберт пишет про то, что процедурный и ОО стиль дополняют друг друга: в процедурном легко добавлять новые операции над фиксированными структурами данными, но трудно добавлять новые структуры, потому что нужно менять все существующие операции над ними, а в ОО легко добавлять новые объекты, но трудно создавать новые функции, потому что надо модифицировать все объекты. Еще он весело удивляется, почему програмисты, желающие спрятать поля класса, все равно показывают их через геттеры/сеттеры и не рекомендует использовать этот подход в объектах в противоположность структурам данных.
Кроме того, он приводит закон Деметры, который не разрешает знать внутреннее устройство объектов и поэтому запрещает вызовы типа: ctx.getOptions().getScratchDir().getAbsolutePath(). Такая конструкция смешно называется крушением поезда и считается проявлением небрежного стиля программирования. Наконец, неугомонный Боб делится простыми правилами, что вызываемую функцию лучше располагать ниже вызывающей, начинать класс с главных функций, и все поля класса объявлять в его начале, что органично вписывается в концепцию кода как художественного текста. Признаться, я далеко не всегда придерживался этих простых соображений.
дни