OberonCore https://forum.oberoncore.ru/ |
|
Как писать несопровождаемый код https://forum.oberoncore.ru/viewtopic.php?f=86&t=3006 |
Страница 1 из 1 |
Автор: | Александр Ильин [ Четверг, 18 Ноябрь, 2010 22:23 ] |
Заголовок сообщения: | Как писать несопровождаемый код |
Неплохая инструкция о том, как нужно писать гарантирующий трудоустройство программный код. http://freeworld.thc.org/root/phun/unmaintain.html Пара примеров: Cargill's Quandry Take advantage of Cargill's quandary (I think this was his) "any design problem can be solved by adding an additional level of indirection, except for too many levels of indirection." Decompose OO programs until it becomes nearly impossible to find a method which actually updates program state. Better yet, arrange all such occurrences to be activated as callbacks from by traversing pointer forests which are known to contain every function pointer used within the entire system. Arrange for the forest traversals to be activated as side-effects from releasing reference counted objects previously created via deep copies which aren't really all that deep. Lisp LISP is a dream language for the writer of unmaintainable code. Consider these baffling fragments: (lambda (*<8-]= *<8-[= ) (or *<8-]= *<8-[= )) (defun :-] (<) (= < 2)) (defun !(!)(if(and(funcall(lambda(!)(if(and '(< 0)(< ! 2))1 nil))(1+ !)) (not(null '(lambda(!)(if(< 1 !)t nil)))))1(* !(!(1- !))))) A Real Life Example 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) { void*temp; temp = malloc(os); memcpy((void*)temp, (void*)buf, os); free(buf); buf = malloc(ns); memset(buf, 0, ns); memcpy((void*)buf, (void*)temp, ns); return buf; }
Некоторые из примеров, к сожалению, попадаются мне в жизни. Цитата: If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime.
|
Автор: | Geniepro [ Пятница, 19 Ноябрь, 2010 08:34 ] |
Заголовок сообщения: | Re: Как писать несопровождаемый код |
Александр Ильин писал(а): Код: void* Realocate(void*buf, int os, int ns) { void*temp; temp = malloc(os); memcpy((void*)temp, (void*)buf, os); free(buf); buf = malloc(ns); memset(buf, 0, ns); memcpy((void*)buf, (void*)temp, ns); return buf; } Ещё тут временный буфер temp не освобождается командой free(temp);, что приведёт к утечке памяти. |
Автор: | Александр Ильин [ Пятница, 19 Ноябрь, 2010 08:49 ] |
Заголовок сообщения: | Re: Как писать несопровождаемый код |
Geniepro писал(а): Ещё тут временный буфер temp не освобождается командой free(temp);, что приведёт к утечке памяти. Пункт номер 5.
|
Автор: | id_ler [ Вторник, 30 Ноябрь, 2010 09:37 ] |
Заголовок сообщения: | Re: Как писать несопровождаемый код |
Методы отладки использования памяти. Разоблачение величайшего мифа о проблеме языка С Цитата: Вполне возможно написать хороший код профессионального качества, который пройдет проверку lint, но в нем могут оказаться серьезные ошибки, в том числе и некорректная работа с памятью. Убытки из-за проблем с памятью могут многократно превысить стоимость самого дорогого инструмента для синтаксического анализа, поэтому надо вычищать исходный код. Даже если код успешно проверен с помощью lint, вполне вероятно, что существует более элегантный, эффективный, качественный и переносимый альтернативный инструмент. ВВ? ![]() |
Автор: | Info21 [ Вторник, 30 Ноябрь, 2010 10:38 ] |
Заголовок сообщения: | Re: Как писать несопровождаемый код |
id_ler писал(а): Ценная ссылочка. Своей авторитетностью. Спасибо.
|
Автор: | Валерий Лаптев [ Вторник, 30 Ноябрь, 2010 10:49 ] |
Заголовок сообщения: | Re: Как писать несопровождаемый код |
Не, не только авторитетность... ![]() Там и полезные методики есть. |
Автор: | Alexey Veselovsky [ Вторник, 30 Ноябрь, 2010 17:48 ] |
Заголовок сообщения: | Re: Как писать несопровождаемый код |
Info21 писал(а): id_ler писал(а): Ценная ссылочка. Своей авторитетностью. Спасибо.А откуда там авторитетность? Этот ресурс славен хреновыми поверхностными статьями ни о чем. |
Автор: | Info21 [ Вторник, 30 Ноябрь, 2010 17:53 ] |
Заголовок сообщения: | Re: Как писать несопровождаемый код |
Alexey Veselovsky писал(а): Info21 писал(а): id_ler писал(а): Ценная ссылочка. Своей авторитетностью. Спасибо.А откуда там авторитетность? Этот ресурс славен хреновыми поверхностными статьями ни о чем. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |