Да, книга требует перевода на обывательский язык, хотя написана она на довольно простом жизненном языке. Я бы даже сказал, что чрезмерно жизненном,ибо слишком много "примеров из жизни". Но это особенность иностранного мышления.
Основное, что можно вынести из книги:
- не дублируйте в разных местах одно и то же, иначе при внесении правок вы что-нибудь где-нибудь забудете, потеряете.
- избавляйте себя от рутинных операций, создавайте автогенераторы кода (это как раз то, что пытается сделать топикстартер, только не понимает, что именно нужно делать).
- ортогональность - важное свойство. Ортогональность заключается в том, что любое изменение программы затрагивает минимально возможный участок программы. То есть, если вы поменяли распиновку выводов для индикатора, вам не нужно переписывать множество кода во всех возможных местах.
Пример, с которым, думаю, вам сложно будет несогласиться:
Код: Выделить всё
#define COEFF 5
.....
result1 = COEFF * a + b / COEFF;
result2 = c + a * COEFF / b + result1;
Пример постулата "не повторяй себя" (не создавать дубликатов), он же пример ортогональност:
Код: Выделить всё
void Print_to_7segLED(char *str, int num)
{
/* текст функции вывода */
}
........
/* где-то в коде */
Print_to_7segLED("1234", 4);
/* где-то в другом месте кода */
Print_to_7segLED("5678", 4);
Сложно не согласиться с тем, что изменение содержания функции вывода не затрагивает остального кода. И сложно не заметить, что такой способ дает значительную экономию в размере получаемого кода. В противовес тому, если бы вместо вызова функции вписывать текст функции напямую во все места
Ортогональность - это термин из математики (геометрии). Ортогональная система координат. Когда точка перемещается вдоль одной оси, по второй ортогональной оси точка остается неподвижной.
Суть ортогонального программирования - изменение в одной функции не затрагивают другие функции. Ничего раздутого в этом нет. Даже наоборот. В вышеприведенном примере функция Print_to_7segLED написана один раз. Этим мы сэкономили размер проги. Так? Так. Мы затрачиваем некоторое время на вызов функции и передачу в нее аргументов. Но зато мы получаем гораздо больше - наша система ортогональна и компактна по размеру. И если вдруг надо чето поменять внутри функции Print_to_7segLED, мы это сделаем ОДИН РАЗ и в одном месте. Вместо того, чтобы вносить правки везде, где у нас в коде есть вывод в индикатор. Правильно? Или вы с этим НЕ согласны?