Wednesday, August 3, 2005

How To Write Unmaintainable Code

How To Write Unmaintainable Code

Взято http://forum.ixbt.com/topic.cgi?id=26:29823-12
Цитата:

Новые проекты - новые перлы, порой уходящие в классику...

Предыстория.
Как-то раз (давным-давно) пришлось ознакомиться с исходниками cdrtools
(набор утилит под "иксы" для записи на CD), внимание упало на генерацию
образа - в соответствующих исходниках ссылки на стандарт ISO9660, в
редакции ECMA-119, выполнялись (в немногочисленных местах, справедливости ради будет сказано) посредством включения в имена функций номеров секций этого документа (например, set_733(...), где 7.3.3 суть номер секции).

Настоящее.
Сталкиваюсь с реализацией поддержки UDF. Ссылающейся в исходниках на
документ, описывающий отличия UDF от ECMA-167, и на сам ECMA-167.
Причём "ссылки" выполнены подобным же образом и в гораздо большем
количестве.

Как здесь не вспомнить про соответствующие рекомендации вот отсюда... процитирую (с мелкими исправлениями) соответствующий кусок:
цитата (How To Write Unmaintainable Code):
When
implementing a very complicated algorithm, use the classic software
engineering principles of doing a sound design before beginning coding.
Write an extremely detailed design document that describes each step in
a very complicated algorithm. The more detailed this document is, the
better.

In fact, the design doc should break the algorithm down
into a hierarchy of structured steps, described in a hierarchy of
auto-numbered individual paragraphs in the document. Use headings at
least 5 deep. Make sure that when you are done, you have broken the
structure down so completely that there are over 500 such auto-numbered
paragraphs. For example, one paragraph might be (this is a real
example):

1.2.4.6.3.13 - Display all impacts for activity where selected mitigations can apply (short pseudocode omitted).

Then...
(and this is the kicker) when you write the code, for each of these
paragraphs you write a corresponding global function named something
like "Act1_2_4_6_3_13()" (for the example above).

Do not document these functions. After all, that's what the design document is for!

3 comments:

  1. ах да, ещё эта программа выдавала результаты в текстовом виде прям на dc диалога... и если их было много, они залезали под кнопку ОК, кажется... ёпть.. .страшная тулзень!!!

    ReplyDelete
  2. иванычевы проги тоже не отличались читаемостью

    ReplyDelete
  3. поянение диме: иваныч - это наш зафкаф, науч. рук.

    ReplyDelete