In the interests of creating employment opportunities in the Java programming field, I am passing on these tips from the masters on how to write code that is so difficult to maintain, that the people who come after you will take years to make even the simplest changes. ...Here's a real life example written by a master. Let's look at all the different techniques he packed into this single C function. void* Realocate(void*buf, int os, int ns) |
Статья о том, как писать сложный для понимания код. Далее перевод некоторых фрагментов.
В интересах трудоустройства на ниве программирования, я привожу здесь советы мастеров о том, как писать код, настолько сложный для понимания, что тем, которые придут вам на смену, потребуются годы на то, чтобы внести в него самые простые изменения. Далее, если вы будете дотошно следовать этим советам, вы обеспечите себе пожизненную занятость, поскольку в вопросе поддержки этого адского кода надежда только на вас.
Будьте абстрактныВ названиях функций и переменных как можно чаще используйте абстрактные слова, вроде it, everything, data, handle, stuff, do, routine, perform and the digits e.g. routineX48, PerformDataFunction, DoIt, HandleStuff and do_args_method.
Используйте восьмеричную систему счисленияПрячьте восьмеричные цифры среди десятичных:
array = new int []
{
111,
120,
013,
121,
};
Компиляторы C превращают myArray[i] в *(myArray + i), что равносильно *(i + myArray), что равносильно i[myArray]. Эксперт найдёт этому хорошее применение. Для большего запутывания можно получать индекс через функцию.
int myfunc(int q, int p) { return p%q; }
...
myfunc(6291, 8)[Array];
Приправьте код комментариями типа /* добавить 1 к i */, но никогда не комментируйте такие вещи, как общее назначение поля или метода.
Непрерывное совершенствованиеДелайте "усовершенствования" как можно чаще и убеждайте пользователей чаще обновляться, ведь никто не хочет работать с устаревшей версией. Если пользователи довольны программой, то они будут ещё довльнее, если вы её "исправите"! Никому не сообщайте о характере сделанных изменений, а если заставят - почему бы не сказать о нескольких ошибках в старой версии, пусть и незаметных?
Ну и напоследок. Лично я не люблю специально запутывать код. Во-первых, лень, а во-вторых - я с радостью спихну на кого-то надоевшую старую программу и займусь чем-то новым. Но мне по душе оставлять в скучном коде разные ребусы, использовать название Maid.Onegai(Method) для выполнения метода в отдельном потоке и определять цветовую константу Suiseiseki.
#define true (random()%2==0)?true:false
ОтветитьУдалитьРуки бы им поотрывать за такое.
ОтветитьУдалить... и вас прибьют свои же, еще на этапе code review
ОтветитьУдалитькрута. спасибо за инфу)
ОтветитьУдалитьВредные советы..
ОтветитьУдалитьОт сволочи. Какая симуляция мозговой деятельности!(сам я во всём этом не очень, но подозревал подобные подвохи)
ОтветитьУдалитьну вроде как в сириус проектах, всё это строго нормировано, так что такая фича не прокатит.
ОтветитьУдалитьКак сказал один начинающий программист, "Иногда мне кажется, что компьютер просто игнорирует все мои комментарии."
ОтветитьУдалитьUtroClickClick, Lis-san - из всего написанного в статье много такого, за что действительно прибьют. Теперь по поводу перечисленного в посте. Первый пример - мне так удобнее и всё тут. Второй - ой, не заметил, ну надо же! Постоянно так делать не надо, да. Третий пример - просто весёлый ребус, помешает только полному дураку. Хуже, когда пишут if(true == b) вместо if(b), дико бесит.
ОтветитьУдалитьпохвальная статья, почитал...
ОтветитьУдалитьТеперь буду знать, как это делается. Спасибо!
ОтветитьУдалитьОч. интересно...
ОтветитьУдалитьОч. интересно...
ОтветитьУдалитьОч. интересно...
ОтветитьУдалитьИнтересно.. Я подписался на твой блог, жду дальшнейших статей!
ОтветитьУдалитьСпасибо
ОтветитьУдалитьСема, НЕ БАЛУЙ!
ОтветитьУдалитьСпасибо за подробную статью!
ОтветитьУдалитьаццки не ясно:D
ОтветитьУдалитьВо дают!
ОтветитьУдалитьНадо будет попробовать написать что-то. Спасибо.
ОтветитьУдалитьэто просто шикарно, особенно для ведущих программистов проекта. можно шантажировать начальство, чтобы зарплату раз в полгода повышало, иначе уволишься, а потом хуй кто разберет твои манускрипты.
ОтветитьУдалить