Не правете това :)
От: gottin
На: 25-11-2005@9:03 GMT+2
Оценка: 1/НеутраленЗад писането на подобен код, може би се крие една съблазнителна идея за доживотното работно мясно (както е споменато), но то от своя страна ще изисква човекът които е написал програмата също да я поддържа. Вярвайте ми, след около 2 месеца без да е пипан кода, дори самият кодер няма да е наясно с повече от 50% от кодирането. А какво ли ще стане ако е нужна промяна след полувин година :). Аз по-скоро бих се навил да си пренапиша кода, в сравнение с това да поддържам код който съм написал по предложените "правила". Казано с други думи, ако човек си осигури доживотно работно място с подобен код, автоматично си осигурява и доживотно гръмване на главата през известни периоди :).
[Отговори на този коментар]
Има по добро поле
От: Владимир Витков <affected< at >abv[ точка ]bg>
На: 25-11-2005@9:50 GMT+2
Оценка: 1/НеутраленПисането на откачен (unmaintainable) код може да е интересен начин да си причините главоболие, но не е за секция новини. За секция хумор е ... и е на около 2 години.
По интересен е сайта http://www.ioccc.org/
Напълно работещи програмки с определена цел и също така абсолютно нечетими. Един от попедителите е успял да събере X приложение в 3 к което генерира фрактали (с малка грешка) и на всичкото отгоре е пуснал и spoiler който ги генерира правилно
[Отговори на този коментар]
имам опит с това
От: hydra <mhydra< at >users[ точка ]sourceforge[ точка ]net>
На: 25-11-2005@11:03 GMT+2
Оценка: 1/НеутраленПреди известно време намерих една такава програма написана донякъде с тези препоръки за писане на код.
Чудното беше че програмата беше под GPL, ама ч беше някакъв фен.
Само като я видях и ми стана зле, а трябваше да преправям някой неща там.
Направо предпочитах да си напиша нова.
Лошо, лошо. . .
Редактиран на: 25-11-2005@11:04
[Отговори на този коментар]
Към: имам опит с това
От: JOKe
На: 25-11-2005@12:34 GMT+2
Оценка: 1/Неутраленима програми които объркват кода в смисъл разместват и променят имена на променливи така че да стнае много бозав при компилация напрактика не се губи нищо просто сорса е бозав оп този начин може да си притежава автора хубавия код и да си го поддърва в същото време да дава кода и никой да не го разбира.. ама по тоя начин се едно пикае на GPL и етц. то така ще стане де едно време даже BitchX няква негова версия ползваше програма за омазване на кода.
[Отговори на този коментар]
Към: имам опит с това
От: hydra <mhydra (a) users__dot__sourceforge__dot__net>
На: 25-11-2005@12:59 GMT+2
Оценка: 1/НеутраленЕ да ама какъв е смисъла ако пише под GPL лиценз?
Тоя където го намерих аз беше просто луд за връзване.Имах чувството че страда от мания за величие, навсякъде беше писал че той така го прави и никой не може да го спре. Се едно печели от тая програма, тя дори с новото gcc не искаше да се компилира.
Нарочно ги беше омазал нещата, абсолютно нищо не му се разбираше.
Ако е платена програма айде може ама за GPL...
Само той ще си остане разработчик , никой няма да иска да се присъедини към него.
А иначе това че по такъв начин си печелиш работно място до живот - не е вярно.
На много места фирмите искат да се отчетеш и като видят какво си направил и изхвърчаш веднага.
Аз примерно ако напиша такъв код на работата си няма и един месец да ме държат по-вече.
Директно ми казват "или си ги оправяш нещата или изхвърчаш" нищо че ме уважават и върша доста работи тук.
Ако напиша такова нещо колкото и да съм им симпатичен направо изхвърчам на секундата.
[Отговори на този коментар]
Към: Към: имам опит с това
От: JOKe
На: 25-11-2005@14:33 GMT+2
Оценка: 1/Неутраленстава въпрос че при зимане на GPl Програма пренаписване на кода и усиране на този код така че нищо да не се разбира но след компилация да си вади резултати който е вадил и преди да се осере например :
int a=0;..
code....
for (;;)
...code...
if (a==somethink) break;
....code..
....
..
a++;
ето за такъв код говорих т.е. зимаш GPl програма усираш я после я продаваш и и даваш кода GPl не е нарушен но кода е неизползваем което напрактиак наебава GPL.
[Отговори на този коментар]
Т
От: JWalker <jwalker< at >abv< dot >bg>
На: 26-11-2005@7:45 GMT+2
Оценка: 1/Неутрален"Имах чувството че страда от мания за величие, навсякъде беше писал че той така го прави и никой не може да го спре."
Това прилича на действията на някой спамър, който маже по клуб без модератор. Никой може да не иска да пише в екип с него, но той се набутва и скапва нещата на другите. Случая явно не е програмистки, а медицински.
[Отговори на този коментар]
бозаджии...
От: гну
На: 25-11-2005@13:45 GMT+2
Оценка: 1/НеутраленБозаджии винаги се намират. Ако си вършиш добре работата тогава няма значение как пишеш кода, мястото ти е сигурно. Такива кокошкарски номера просто изглеждат смешни.
[Отговори на този коментар]
Към: бозаджии...
От: Hapkoc
На: 25-11-2005@15:45 GMT+2
Оценка: 1/НеутраленПълни глупости са това за доживотното място, но е доста забавно как хората се връзват. :)
Човека, който е писал "How to write unmaintainable code" има адски добро чувство за хумор. Ако някой ги е взел насериозно тези препоръки или е взел насериозно, че някой ги взима насериозно - не е на добре...
[Отговори на този коментар]
Към: Към: бозаджии...
От: JWalker <jwalker (a) abv__dot__bg>
На: 26-11-2005@7:50 GMT+2
Оценка: 1/НеутраленАко се вземе като ръководство за "какво не трябва да се прави" си е много добро ... :)
[Отговори на този коментар]
Към: бозаджии...
От: пешо
На: 25-11-2005@16:58 GMT+2
Оценка: 1/НеутраленИмах колега който в продължение на година бе успял да напише толкова много код че в момента (близо 2 години след като ни напусна) още се мъчим да поправим неговите дивотии. Направо ми е трудно да повярвам че съм работил с него в една стая толкова дълго време. За съжаление винаги работехме по различни проекти :)
След като напусна един от любимите ми моменти беше view в sql-а което селектва от няколко други view-та които на свой ред от други и така около 6-7 пъти. Излишно е да казвам че навътре view-тата ставаха безсмислено тъпи и разбира се никъде другаде не се използваха. Същото и с кода - класове наследяващи се един друг в някаква странна и безсмислена плетеница. Човека просто изпитваше нужда да използва класове за щяло и нещяло. Става въпрос за нива на вложеност които изглеждат зле дори на голяма диаграма.
Е... не си запази работата но честно казано подозирам че не е писал толкова объркан код нарочно - и това ме плаши!
[Отговори на този коментар]
Към: Към: бозаджии...
От: Владимир Витков <affected< at >abv__dot__bg>
На: 26-11-2005@7:19 GMT+2
Оценка: 1/НеутраленЕдин от лювимите ми сайтове http://www.thedailywtf.com
прекрасен пример за отвратителен код. Често се сещам за него като напиша някоя простотия и след това я оправям :)
[Отговори на този коментар]
заглавие
От: Мартин Лазаров <lazarov (a) mail< dot >bg>
На: 25-11-2005@21:06 GMT+2
Оценка: 1/НеутраленNever Test
Never, Ever Do Any Performance Testing
Never Write Any Test Cases
Човека доста добре го е написал! Това е доста голям труд и е добре написан! Важното е как ще го разбереш!;)
[Отговори на този коментар]
Някой няма ли да го прочете до края? :)
От: CTEHATA
На: 25-11-2005@22:30 GMT+2
Оценка: 1/НеутраленЧовека сам си казва:
1) че това е шега
2) че по-лесно се възприема и разбира, отколкото ако го беше написал в стил "не правете така"
[Отговори на този коментар]
Некои съображения
От: Димитър Жеков <jimmy (a) is-vn __точка__ bg>
На: 28-11-2005@11:47 GMT+2
Оценка: 1/НеутраленНе ползвайте препоръчаните още в началото имена на променливи като adsf или aoeu - бързо ще ви разкрият. vexed или iopl се пишат също толкова лесно, изглеждат смислени и са толкова общи, че можете да ги ползвате навсякъде.
Винаги слагайте типа на функцията и името й на отделни редове (честа практика в GNU кода). Правете го и с променливите и класовете, като задължително ползвате подобни имена за функции и класове.
Разгледайте стандартните C++ библиотеки iostream и STL - те са чудесен пример за wrapping и indirection. Ползвайте ги, дори ако масив и puts() биха ви свършили работа - на всеки 6 месеца или C++ библиотеките, или стандарта на езика се сменят достатъчно, за да направят кода некомпилируем, или поне да изведат няколкостотин предупреждения при компилация, в които да се изгуби всяко наистина важно предупреждение.
Ползвайте изключения за всички грешки (както правят повечето RAD средства), например за погрешно въведена от потребителя дата, и проверявайте за грешки по най-строгия възможен начин - "03.7.2005" очевидно е невалидна дата. Изисквайте фиксиран нестандартен входен формат, например "ГГ-ММ-ДД" (освен ако сте в Япония - там искайте "ДД.ММ.ГГ").
Никога не наследявайте компоненти (бездруго е трудно в Win~1), нито екрани (проблемно при всички RAD средства). Дефинирайте всички инициализации на полетата и екраните само чрез константи (VS.NET няма и да ви разреши променливи). Кода от екраните, в който сте заложили и логиката на част от компонентите, копирайте с текстовия редактор.
Дефинирайте си поне 5 namespace нива, както е в .NET, и се старайте имената на областите да са повече от обектите в тях - така разпределението на обектите става "много ясно". Или не ползвайте изобщо namespace, както в Win32 API - по този начин разпределението е "много просто".
Използвайте поне 20 символни имена на файловете и директориите, задължително с интервали, и ги сменяйте във всяка версия (пример - home директорията в Win~1). Ползвайте дескриптивни имена вместо индикативни - така при най-малката промяна ще можете да ги сменяте и да наричате това "добра практика".
За съжаление в момента нямам възможност да прочета статията докрай...
[Отговори на този коментар]