Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Вниз

Как можно уменьшить сложность разработки больших комплексов.   Найти похожие ветки 

 
Ученик чародея ©   (2006-02-17 20:30) [0]

Навскидку.
1. Документирование каждой процедуры/метода/свойства/класса...
2. Применение агентного или объектного программирования.
3. Разделение программы на модули однородные по семантике.
4. Использование RAD средств.
5. Использование языков с большим количеством бесплатных библиотек (C/C++, Java, Delphi).
...


 
Джо ©   (2006-02-17 20:35) [1]

Одно другому не мешает, имхо.


 
Игорь Шевченко ©   (2006-02-17 20:38) [2]

2 по моему мнению, при 5 само собой разумеющемся, чтобы не тратить время на изобретение велосипедов. 1 тоже способствует, если разумно использовать.

6. Грамотное проектирование, без этого все остальные пункты бесполезны.


 
Sergey Masloff   (2006-02-17 20:39) [3]

Джо ©   (17.02.06 20:35) [1]
Мешает-мешает.
п.1 вообще детский лепет
п.2 слышал звон не знает где он
п.3 вообще общие слова
....


 
Ученик чародея ©   (2006-02-17 20:47) [4]

>>Sergey Masloff   (17.02.06 20:39) [3]
>>п.3 вообще общие слова

Например работу с FTP и с локальными файлами разнести в два и более независимых юнита. Чтобы каждый модуль был самодостаточен(или группа модулей) и его можно было без проблем отделить от проекта, например, для повторного использования.

>>Sergey Masloff   (17.02.06 20:39) [3]
>>п.2 слышал звон не знает где он

Может тогда вы расскажете, в двух словах, в чем концепция агентного подхода к программированию и ее преимущества?

>>п.1 вообще детский лепет

Не совсем нравится, так как забирает время, которое можно потратить на кодирование.


 
Игорь Шевченко ©   (2006-02-17 21:23) [5]


> Не совсем нравится, так как забирает время, которое можно
> потратить на кодирование.


Неплохо бы учитывать, что программы пишутся не для компьютера


> Например работу с FTP и с локальными файлами разнести в
> два и более независимых юнита


Как минимум, в три.


 
Sergey Masloff   (2006-02-17 21:29) [6]

Игорь Шевченко ©   (17.02.06 21:23) [5]
>Неплохо бы учитывать, что программы пишутся не для компьютера
А так как пишутся для человека, а ему свойственно менять желания, код постоянно "дышит" и рассинхронизируется с документацией. Потому документирование каждого чиха занятие не только бесполезное но и вредное. Код должен быть самодокументируемым (имена методов etc...) и легкочитаемым, а документация должна описывать только самые общие концепции и, может быть, какие-то аспекты алгоритмов нетривиальные. Вроде так.


 
Ученик чародея ©   (2006-02-17 21:31) [7]


> Игорь Шевченко ©   (17.02.06 21:23) [5]
> Неплохо бы учитывать, что программы пишутся не для компьютера


А какой уровень документирования достаточен (люди диссертация по этому поводу защищают)? Каждый оператор или достаточно общего описания работы модуля?


> > Например работу с FTP и с локальными файлами разнести в
> > два и более независимых юнита
>
>
> Как минимум, в три.


Почему в три? Интересно, так как никогда не работал в команде, но мой код вполне читабелен (по словах тех кто с ним работает).

А старые студенческие программы просто жуть. При попытке что-то отшкрести - падает все.


 
Ученик чародея ©   (2006-02-17 21:35) [8]

>>Sergey Masloff   (17.02.06 21:29) [6]

Sun-овский JDK (javadoc) позволяет по исходникам строить скелет документации (плюс препроцессор для документированного кода).


 
Sergey Masloff   (2006-02-17 21:38) [9]

Ученик чародея ©   (17.02.06 21:35) [8]
Вот только хотел про это написать. Это профанация! То что он генерит ( и подобные ему) это чушняк. Гораздо быстрей прочесть код чем шаблонные фразы которые пытаются его описать. Я с этим делом работал много, интегрировал большую систему в которой как раз так документация была сделана. Это ужас. Да что там далеко ходить - документация в Jedy и Indy. Слово одно - убожество. Только замедляет работу.


 
wicked ©   (2006-02-17 21:39) [10]

не меня спрашивали, но вставлю свои 5 коп.......

> А какой уровень документирования достаточен (люди диссертация
> по этому поводу защищают)? Каждый оператор или достаточно
> общего описания работы модуля?
имхо, общее описание модуля, кратенькие аннотации к функциям/классам/методам, если не понятно из их названия, "гадкие" места в алгоритмах....


> Почему в три? Интересно, так как никогда не работал в команде,
>  но мой код вполне читабелен (по словах тех кто с ним работает).
интерфейс-предок + уточняющие реализации..... почти идеальный пример - TStream сопотомки....


 
Игорь Шевченко ©   (2006-02-17 22:10) [11]

Ученик чародея ©   (17.02.06 21:31) [7]


> Почему в три?


В одном абстрактная реализация, в двух других две конкретные.


> А какой уровень документирования достаточен (люди диссертация
> по этому поводу защищают)? Каждый оператор или достаточно
> общего описания работы модуля?


Рекомендуют документировать интерфейс каждого класса, при этом в документации желательно отразить, почему без этого класса или без именно такого его интерфейса нельзя обойтись.

Второй подход к написанию документации - это составление help, как в Борланд и MS. В любом случае крайне желательно, чтобы другие участники команды не задавали вопросов о том, как использовать те или иные интерфейсные методы, и также хорошо, чтобы реализация тоже не вызывала непреодолимого желания найти разработчика и выпытать у него особенности поведения реализации.

Кстати, очень хороший код в исходниках Unix, много лет назад я видел какую-то BSD, пришел в восторг.

Sergey Masloff   (17.02.06 21:38) [9]


> Вот только хотел про это написать. Это профанация! То что
> он генерит ( и подобные ему) это чушняк


Не скажи. Генерация перекрестных ссылок очень полезна.


 
Дмитрий Белькевич ©   (2006-02-18 04:40) [12]


> А какой уровень документирования достаточен (люди диссертация
> по этому поводу защищают)? Каждый оператор или достаточно
> общего описания работы модуля?


Знаете, люди по какой только ерунде диссертации не защищают.
Достаточный уровень зависит от модуля. Согласитесь, что какой-нить hello world и модуль бпф нужно документировать по-разному. Если модуль простой, как три копейки (хоть и большой), смысла особого документировать всё подряд мало. А если модуль - кладезь нестандартных идей, пишите всё подряд. Потом и сами как найдёте, и коллеги спасибо скажут. Это что внутри модуля.

Что касается наружного лица модуля - то тут, чем точнее опишете, тем меньше вопросов. Например, документация от MS иногда просто убивает. Как вспомню, как несколько раз псевдонаучными методами параметры некоторых api искал, так вздрогну ;)


 
Ученик чародея ©   (2006-02-18 04:50) [13]

>>Дмитрий Белькевич ©   (18.02.06 04:40) [12]

А что более важно, чтобы при минимуме времени и средств создать крупный проект?


 
Anatoly Podgoretsky ©   (2006-02-18 09:22) [14]

wicked ©   (17.02.06 21:39) [10]
Может название сменить, зачем же обходные пути?


 
Ученик чародея ©   (2006-02-18 18:00) [15]

Есть предложение - составить четко означенные критерии хорошего кода на Delphi с примерами и антипримерами и способы уменьшения сложности и выложить в FAQ.

Например, ни в одной институтской программе этого нет, а надо бы, так как хороший код автоматически начинает получаться только со 2-го рабочего проекта.


 
Kerk ©   (2006-02-18 18:02) [16]

Ученик чародея ©   (18.02.06 18:00) [15]
Например, ни в одной институтской программе этого нет


"Технология программирования", 3й курс


 
Ученик чародея ©   (2006-02-18 18:05) [17]

>>Kerk ©   (18.02.06 18:02) [16]

Там нет четкой технологии, там есть набор общих принципов, которые нужно самому выстроить в технологию.


 
Kerk ©   (2006-02-18 18:09) [18]

Ученик чародея ©   (18.02.06 18:05) [17]

Ну и правильно.


 
wicked ©   (2006-02-18 18:18) [19]

> Anatoly Podgoretsky ©   (18.02.06 09:22) [14]
например, "МоёДлинноеСамодокументирующееИмя1", "МоёДлинноеСамодокументирующееИмя2" и т. д?........
я понимаю, что нужно называть четко, пусть и длинно, и даже сам так делаю..... но согласитесь, что если для адекватного названия идентификатору напрашивается целая фраза (а ля, утрированно, "флажок, сигнализирующий о том, что мышь попала в нужную точку и при данном режиме отображения делать ничего не нужно"), то что то нужно переделывать, не так ли?....
тут уж называем исходя из контекста (например, метод Open класса BeerCan), либо пишем аннотации....


 
Игорь Шевченко ©   (2006-02-20 12:26) [20]


> Есть предложение - составить четко означенные критерии хорошего
> кода на Delphi с примерами и антипримерами и способы уменьшения
> сложности и выложить в FAQ.


С антипримерами просто - полные форумы


 
КаПиБаРа ©   (2006-02-20 12:35) [21]

Ученик чародея ©   (18.02.06 4:50) [13]
А что более важно, чтобы при минимуме времени и средств создать крупный проект?

Опыт


 
Algol   (2006-02-20 12:40) [22]


> Есть предложение - составить четко означенные критерии хорошего
> кода на Delphi с примерами и антипримерами и способы уменьшения
> сложности и выложить в FAQ.


Хых.... тут сразу ТАКОЙ холивар начнется....
Сколько людей - столько мнений. И к программистам это в первую очередь относится.

Касаемо коментов: я, например, люблю коментировать достаточно подробно. Не каждый оператор конечно, но так что бы понятна была поледовательность производимых действий. И при беглом просмотре коментов можно было бы понять общий алгоритм.


 
Mystic ©   (2006-02-20 12:45) [23]

Как по мне панацеи нет :) Равно как и конструктивных советов. Можно пользоваться пунктами 1-5 из твоего списка и запутаться. Можно пользвоаться пунктами 1-5 и не запутаться. Можно не пользоваться пунктами 1-5 и все-таки разработать неплохую большую программу %)


 
by ©   (2006-02-20 14:06) [24]

Ученик чародея ©   (18.02.06 18:00) [15]
хороший код автоматически начинает получаться только со 2-го рабочего проекта

Хороший код получается с третьей системы, так как после второй приходит ложное понимание что все хорошо.
====
Самодисциплина - эффект второй системы
    Первый проект архитектора стремится к скромности и ясности. Архитектор
понимает,  что  не знает,  чем занимается,  поэтому  он  занимается этим  со
старанием и самоограничением.
    При работе над первым проектом ему постоянно приходят в голову то одни,
то  другие  "украшения".  Они  откладываются в сторону для использования  "в
следующий раз". В конце концов,  первая система закончена,  и  архитектор, с
твердой уверенностью в  себе  и продемонстрированным освоением этого  класса
систем, готов к созданию нового проекта.
    Эта вторая система таит  наибольшие  опасности для проектировщика.  При
работе над третьей и последующими  системами  закрепляется  полученный ранее
опыт в  отношении  общих  характеристик таких систем, а  различия между ними
выявляют те  части  опыта,  которые носят частный характер и  не могут  быть
обобщены.
    Общая тенденция  заключается в перегруженности проекта  второй  системы
идеями и украшательствами, благоразумно отложенными в сторону при работе над
первым проектом.  В  результате получается, говоря словами Овидия,  "большая
куча".
(с) Фредерик П.Брукс. Мифический человеко-месяц или как создатся программные системы



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.013 c
8-1126260166
palgen
2005-09-09 14:02
2006.03.12
Если стоят две карты(TVTuner) с видеовходом ...


15-1140366549
Fenik]
2006-02-19 19:29
2006.03.12
Ищу варган


2-1140696688
-=Dark=-
2006-02-23 15:11
2006.03.12
Кто нить сталкивался с такой проблемой?


8-1128190197
Newman
2005-10-01 22:09
2006.03.12
Добраться до оверлея


2-1140975612
Volkodav
2006-02-26 20:40
2006.03.12
Полоса перемотки для MediaPlayer1





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский