Небольшая книжка, в которой много полезных мелочей.
Например, более точные варианты названий для типичных функций:
send - deliver; dispatch; announce; distribute; route
find - search; extract; locate;recover
start - launch; create; begin; open
make - create; setup; build; generate; compose; new
Именованные интераторы для циклов (ui лучше, чем просто i).
Дополнительные постфиксы - size_mb, html_utf луче, чем size и html.
first/last - это включающие, а begin/end - исключающие границы.
Пометы в комментах:
TODO - задумано, но не сделано.
FIXME - известно, что есть проблема
HACK - неэлегантное решение проблемы
XXX - серьёзная проблема
Уже второе недоумение насчёт цикла do-while (которые непонятно, зачем нужен).
Разоблачён миф о том, что из функции должен быть только один выход. Он тянется из чистого C, где нередко забывали вычистить память перед выходом. Но c тех пор появились исключения, деструкторы и очистка мусора. А в C простительно писать goto cleanup;
Вообще, если удаётся уменьшить количество отступов, - это хорошо.
Запутывают код: многопоточность, обработчики сигналов/прерываний, исключения, указатели на функции и анонимные функции, виртуальные методы.
В JavaScript и Python переменная, объявленная внутри цикла, будет видна и снаружи. Вообще, область видимости переменных надо сужать. А самые лучшие переменные - константы, поэтому лучше всего менять их один раз.
Переменные объявлять где используются, а не в начале блока. Объявлять всё в начале блока - дурная традиция из Pascal и раннего C (хотя в C99 уже разрешили объявлять где угодно).
Также есть приятные куски кода:
Макрос для C++, чтобы убрать warning для неопределённого конструктора копирования или оператора присваивания.
И потом писать:
Например, более точные варианты названий для типичных функций:
send - deliver; dispatch; announce; distribute; route
find - search; extract; locate;recover
start - launch; create; begin; open
make - create; setup; build; generate; compose; new
Именованные интераторы для циклов (ui лучше, чем просто i).
Дополнительные постфиксы - size_mb, html_utf луче, чем size и html.
first/last - это включающие, а begin/end - исключающие границы.
Пометы в комментах:
TODO - задумано, но не сделано.
FIXME - известно, что есть проблема
HACK - неэлегантное решение проблемы
XXX - серьёзная проблема
Уже второе недоумение насчёт цикла do-while (которые непонятно, зачем нужен).
Разоблачён миф о том, что из функции должен быть только один выход. Он тянется из чистого C, где нередко забывали вычистить память перед выходом. Но c тех пор появились исключения, деструкторы и очистка мусора. А в C простительно писать goto cleanup;
Вообще, если удаётся уменьшить количество отступов, - это хорошо.
Запутывают код: многопоточность, обработчики сигналов/прерываний, исключения, указатели на функции и анонимные функции, виртуальные методы.
В JavaScript и Python переменная, объявленная внутри цикла, будет видна и снаружи. Вообще, область видимости переменных надо сужать. А самые лучшие переменные - константы, поэтому лучше всего менять их один раз.
Переменные объявлять где используются, а не в начале блока. Объявлять всё в начале блока - дурная традиция из Pascal и раннего C (хотя в C99 уже разрешили объявлять где угодно).
Также есть приятные куски кода:
Макрос для C++, чтобы убрать warning для неопределённого конструктора копирования или оператора присваивания.
#define DISALLOW_COPY_AND_ASSIGN(ClassName) \ ClassName(const ClassName&); \ void operator=(const ClassName&);
И потом писать:
class ClassName { private: DISALLOW_COPY_AND_ASSIGN(ClassName); ... public: ... };
Комментариев нет:
Отправить комментарий