Pull to refresh

Comments 58

Это кажется называется «обсуфикация кода», не? )))

Счас поначитаются, и начнут развлекаться… А потом сами-же в своём «чистописании» не разберутся )))
Счас поначитаются, и начнут развлекаться… А потом сами-же в своём «чистописании» не разберутся )))
Для того чтобы потом не огрести есть всякие SVN'ы, git'ы, mercurial'ы и прочие приблуды, облегчающие последствия экспериментов.
Те кто начнут эксперементировать ради эксперимента скорее всего с SVNами не знакомы, я полагаю.
Тогда сами себе злые Буратины :)
Обфускация. Обсуфикация — это, надо полагать, что-то вроде добавления суффикса _l локальным переменным, _g — глобальным и _p — параметрам? :-)

Надо было добавить дисклеймер — ни переводчик, ни автор не несут ответственности за возможные применения текста? :-)
Обфускация — она самая, попутался малость.
А в чем разница? Обфускация, на уровне исходных текстов, назначение — усложнение исследования кода, что не так? Ну разве что делаться может вручную, а не автоматизированно, но это не основополагающая часть определения.
Обфускация — это не то, в начале же написано «ваш код не должен выглядеть неподдерживаемым, а только быть таким»
Вы уверены, что хотели написать именно «Хампти Дампти», а не «Шалтай-Болтай»?)
Произвольно смешивайте несколько языков (человеческих или компьютерных).

У нас есть возможность сложных комбинаций: транслит, неграмотный английский, точно такие же имена на грамотном английском, неправильный перевод (good — well) и комбинации всех методов именований в одной переменной.
Хороший пример слово code, cod, kod, kode, cd (сокращение) — мне попадались все эти варианты ;)
GoodPlusPlus; NotGood != Bad и так далее. Оруэлл наше все. Имена переменных и функций на ньюспике обеспечат всех работой на долгие годы.
The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.
Tom Cargill
а слышал такой примерный русский аналог: 90% сделано, 90% осталось
А.К.Р.О.Н.И.М. / псть скрщнми грзд интрсн


На ум сразу приходит Стив Макконнелл и:

mov AX, 732h   ; R. I. P. L. V. B.


Жаль, что в университете редко объясняют студентам, о том, что чистота и хорошая документированность кода важна не менее, чем его работоспособность — намного проще работать, когда чистый код с внятными комментариями входит в привычку. Хотя все же есть преподаватели, которые это делают — огромное им спасибо.
А лучше, когда код не требует комментариев. То есть код и переменые строятся таким образом, что читаются нативно.
Угу. При этом не использует рекурсию, в каждой строчке не больше 80 символов и всего не более 30 строк кода.
Чего вы нашли неподдерживаемого в рекурсии?
Легкоподдерживаемый код это простой код. Рекурсия не является простым кодом. И именно к простому коду не нужны комментарии.
> Рекурсия не является простым кодом.
С каких пор?

> Легкоподдерживаемый код это простой код.
То есть рекурсию использовать нельзя, по-Вашему?
Угу. По-моему все программы должны быть не более 30 срочек. И без рекурсии.

Может мне табличку «сарказм» вместо аватарки поставить?
Ладно, тогда чего вы нашли сложного в рекурсии?
Циклы тоже лучше не использовать. Они тоже усложняют код.
а мне пришли в голову мысли о сокращениях directX, то еще чудо:)
Как это знакомо, боже мой. Радует лишь то, что мы уже закончили тащить тот проект.

_getSomethingGet()
getSomethingGet()
__getSomethingGet()

три разные функции, комментарии есть только к одной, в зависимости от входящих данных либо вызывается callback функция(как оно там называлось) и делает что угодно.
Комментарии: 70% пустышки-шаблоны, 20% ломаный английский, 10% русский.

а шаблоны случайно не такие?
// comment this позднее

Долго еще буду вспоминать.
Как же я Вас понимаю, недавно пришлось видеть проект от которого ночь не спать можно, вот выдержка:
  1. private void w_hlink_w_r_w_rPr(XmlNode rPr, ref Paragraph p)
  2.         {
  3.             Style stl = new Style();
  4.  
  5.             foreach(XmlNode node in rPr.ChildNodes)
  6.                 switch (node.Name)
  7.                 {
  8.                     case "w:rStyle":
  9.                         string seed = node.Attributes["w:val"].Value;
  10.                         stl = styles.GetStyle(seed).FullCopy();
  11.                         SetStyleToP(stl, ref p);
  12.                         break;
  13.                 }
  14.  
  15.             tip_w_rPr(rPr, ref stl);
  16.             SetStyleToP(stl, ref p);
  17.         }

Это ещё достаточно безобидный кусок кода.
Остальные функции и переменные в таком же стиле…
какой замечательный код! Мне кажется, он нарушает все существующие coding guidelines и замечателен уже этим фактом! ;-)
Ему самое место на govnokod.ru )
UFO just landed and posted this here
найдите разработчика и напомните ему легенду про маньяка-кодера
хреново, что они в США/Франции/Индии/Китае, а так бы джихад точно получили бы…
Вот поэтому практика «no review — no submit», несмотря на вызываемые тонны раздражения и немотивированную агрессию, когда твой код попал к человеку, который докапывается до каждой буквы, зачастую если и не гарантирует, то очень сильно повышает вероятность того, что потом это можно будет поддерживать и ре-использовать.
Да! Я вырос на Стиве Макконнелле, но, к сожалению, ревью тул прикрутили только после 9 лет разработки проекта…
автор забыл про фундаментальные истины

-1. Блоки кода, классы функции, которые есть в коде, но они нигде не используются.
0. Полотнища с закомментированным кодом непонятного назначения, иногда, после удаления таких полотнищ все перестает работать.

ПРЕЛЕСНО )))
а нате вам виртуальный + в репу
-1 — это легко отслеживается, по крайней мере в Java в современных IDE. В плюсах сложнее, но опять же можно отследить.

Если же используются плюсы, то там такой простор для экспериментов и мелкого вредительства, что просто дух захватывает ;-) Знамя Александреску мы несем гордо!
что можно, то я согласен, но у меня было не тривиально: маловремени, запрет переписывать код впринципе, нет манов по ядру проги, нет коментов вприципе (кроме мистических ссылок на багтрекер, который умер 2 года назад), куча патченных чужих библиотек (исходных кодов нет), грязный код по всей плоскости кроме ядра, в ядре просто ппц какой заумный код (вплоть до указателей на куски кучи и операции с двоичным кодом).

ну и финалом — это крякнутая патченная делфа 3,1
фаталити — полное отсутствие видения проекта у заказчика

это был мой кошмар-на-яву

ЗЫ да и не такой я матерый делфист тогда был, мягко говоря новичек, возможно для спецов все там выглядело по-другому
Александреску раскаялся и написал TDPL. ;)
Я думал, что слово «пролог» относится к Прологу. Вот где все, что нужно сделано уже на уровне языка!
Да уж, ничего придумывать не надо, умудрилсыя «вляпаться» в поддержку Tivoli TEC, вот уж где всё заранее нечитаемо и неподдерживаемо.
Гениально :) И, к сожалению, встречается в живом коде.
ааа, теперь-то я понял, наконец, почему в проекте, который мне был передан все было так ужасно. автор имел чувство юмора и оставил мне прекрасный код, написанный, видимо, по этой статье. пример:
pastebin.com/N3XCBCcS
Меня от него сплющило…
А теперь представьте это ещё и без подсветки синтаксиса.
Я видал людей, которые пишут программы в мэйне (иногда в паре-другой функций), на переписывание с нуля которых даже с ООП и «правильными подходами» у опытных программистов уходило несколько месяцев. Размеры программ потрясали — 10000-20000 тысяч строк. И все это в одной-двух функциях. И что самое удивительное, эти программы даже иногда работали, с утечками памяти, заваливанием через 20 минут работы, случайным удалением всех файлов в каталоге куда ты сохраняешь другой файл, сообщениями «произошла какая-то ошибка» и падением. Но они работали. Программистам, которым удается запустить такой код необходимо вручать «программистскую премию Дарвина».
А получится? Премия Дарвина требует изъятия своих генов из генофонда человечества. По аналогии, такая же премия для программистов должна требовать полного изъятия своего кода из рабочего кода человечества — не уверена, что такое реализуюется.
Получится! Если код, попадающий под хотя бы один из вышеприведенных пунктов, не будет становиться рабочим и будет изыматься сразу при рождении. Хотя, я конечно немного идеалистичен. Всегда будут такие программисты, всегда будут компании, в которых работают такие программисты… Но премию выдавать уж точно можно!
Гуд.
Спасибо! Такие вещи обязательно надо переводить на русский.
… распечатывать большими буквами и развешивать на стенах офиса? :-)
Отлично подходят Эсперанто, Клингонский язык и хоббитон.


Хоббитон — это название селения, а хоббиты разговаривали на вестроне, он же всеобщий. Или Вы что-то другое имели в виду? Если просто нужен фантастический язык, можно было бы упомянуть синдарин или квэнью.
Да, имелся в виду хоббичий язык, *смущенно* я просто Толкина последнее время читала только на английском. Исправила, спасибо :-)
Sign up to leave a comment.

Articles