Deutsch

Правильно программировать

315  1 2 все
  Quo Vadis коренной житель27.11.05 20:27
27.11.05 20:27 
Где учат правильно проектировать и программировать <Anwendungen> ...???
Чтобы легко можно было что-то изменить...
можете посоветуйте литературу...
как-то написал для одной фирмы программку небольшую...на 1500 строчек..кода..
теперь попросили кое-что изменить...смотрю в код..и нечего не понимаю...
особенно всю логику ...хотя всё написал от и до сам..но 8-мь месяцев назад...
особенно непонятно зачем мне так много переменных около 50 штук...
начинаю распутывать...натыкаюсь на процедуры..вызывающие другие процедуры..и так далее...
голова кругом идёт...
как правильно оформить код...???
скажу сразу, я не программист...
#1 
Tomasson украинеджин27.11.05 20:34
Tomasson
NEW 27.11.05 20:34 
в ответ Quo Vadis 27.11.05 20:27
так это нормально, когда смотришь на свои старые программы, впадать в шок 8-)
вообще-то, вопрос сложный.
Все зависит от того, что ты уже знаешь.
На каком хоть языке прога написана?
#2 
  Quo Vadis коренной житель27.11.05 20:40
NEW 27.11.05 20:40 
в ответ Tomasson 27.11.05 20:34
<VB> с некоторыми кусками из <API>
#3 
  Quo Vadis коренной житель27.11.05 20:42
NEW 27.11.05 20:42 
в ответ Tomasson 27.11.05 20:34
Но этот язык не собираюсь больше мучить...
на данный момент интересует <Delphi> <C++> ..освою маломальски Си перейду на <.net>...
а разве нет каких-то общих правил...
#4 
GANDJUBAS Ганджубас27.11.05 20:49
GANDJUBAS
NEW 27.11.05 20:49 
в ответ Quo Vadis 27.11.05 20:27
а точных правил и нет...
Есть только спецификации на уровне себя лично, на уровне проекта, на уровне фирмы...
Каждый со временем становится более опытным. В результате чего давно писаный код кажется совсем непонятным и от части бредовым. Через это все проходят.
Я часто ужосаюсь смотря на с свой старый код. Учитывая, что я только в начале карьерного пути, то ужосаться прийдется еще долго... Про тебя можно писать тоже самое. Ты еще тоже молод и неопытен.
#5 
  Quo Vadis коренной житель27.11.05 20:51
NEW 27.11.05 20:51 
в ответ GANDJUBAS 27.11.05 20:49
а как вот <Murr> переписывает чужие программы...
какие-то прозрачности...у него там..
#6 
Tomasson украинеджин27.11.05 21:00
Tomasson
NEW 27.11.05 21:00 
в ответ Quo Vadis 27.11.05 20:42
есть общие правила, но языки бывают разные, которые то поддерживают, то не поддерживают правила:-)
Ну, начни с основ ООП:
классы, обьекты, полиморфизм, интерфейсы, наследование.
Потом переходи на UML, чтобы ты мог моделировать свои приложения и потом не вспоминать, чего ты там творил.
Вот тебе ссылка на видео-уроки для нового Visual C# 2005 Express Edition:
http://msdn.microsoft.com/vstudio/express/visualcsharp/learning/default.aspx
Так что, начинай сразу с .NET 8-)
Попытайся вникнуть, что и как они создают.
#7 
  Quo Vadis коренной житель27.11.05 21:09
NEW 27.11.05 21:09 
в ответ Tomasson 27.11.05 21:00
прикольные уроки...но у меня <Visual Studio .Net 2003> они сильно различаются...??
#8 
Tomasson украинеджин27.11.05 21:17
Tomasson
NEW 27.11.05 21:17 
в ответ Quo Vadis 27.11.05 21:09
сильно.
но на правила программирования эти проги не влияют.
Просто в VS 2005 больше функций и она основана на .NET 2.0
#9 
voxel3d Мальчик ветра27.11.05 21:27
voxel3d
NEW 27.11.05 21:27 
в ответ Quo Vadis 27.11.05 20:27, Последний раз изменено 27.11.05 21:37 (voxel3d)
Если пишешь используя ОО и процедурные парадигмы, то прочитай книгу Мартина Фaулера "Рефакторинг" и книгу "the gangs of four": "Design Patterns". Эти две книги прочесть обязательно.
От себя добaвлю: пиши везде комментарии. Параноидально. Дaже, если они кажутся идиотскими. Второе, всегда, вообще всегда, закладывайся на то, что будешь менять программу потом. Обдумывая функциональность класса / модуля, которыe будешь использовать в программе, начинай с дизайна, т.е. думай о том, как именно клиентская часть будет использовать данныe сущности. Избегай ненужных связанностей. Каждая отдельная сущность должна в минимальной степени зависеть от других. Избегай больших методов. В иедале не более пяти строк на метод. Мозг не в состоянии одновременно концентрировать внимание более, чем на пяти-семи объектах. Избегай ненужных хаков. Признак профессионализма - лёгкое понимание кода.
В общем, вот. Удачи.
Dropbox - средство синхронизации и бэкапа файлов.
#10 
Murr коренной житель27.11.05 21:33
Murr
NEW 27.11.05 21:33 
в ответ Quo Vadis 27.11.05 20:51
Мурр нормально переписывает чужие программы.
Только вот у Мурр'а своего написанного кода... он и не знает сколько. И в добавок еще переделанного из-под других и _разных_ наверное не меньше.
Теперь вопрос об том _как_ это делается.
1. Есть две крайние точки - информация в базе и информация на экране. Чем меньше всяких ненужных вещей между ними - тем лучше.
2. Всегда есть какая-то спецификация/документация . Что требуется на начальном этапе - определить насколько эта документация соответствует тому что реализовано. Все, что не соответствует идет не как переработка, а как разработка с нуля.
3. Выберается архитектура, которая используется в проекте, а лучше - которая может использоваться и в других проектах. Как результат - получаешь "скелет" приложения - не надо будет думать что и где - оно будет определено выбранной архитектурой, нужно будет только реализовывать то что нужно.
4. Приводишь то, что имеешь, к выбранной архитектуре. Понятное дело, что весь проект сразу ты не поднимешь, но те части, в которых ты что-то меняешь, должны выходить из твоих рук уже полностью соответтвующими выбранной архитектуре.
5. Код, который ты пишешь, должен быть простым и понятным, не должен содержать трюков, не должен использовать ничего, кроме того, что стандартизовано. Сложные, выпадающие из принятой архитектуры, вещи должны быть выделены.
и наконец - нулевое правило - ПРОЕКТ ДОЛЖЕН БЫТЬ ДОКУМЕНТИРОВАН. Кроме того, документация на проек разрабатывается не по факту написанного кода, а поэтапно разрабатывается. Кодинг же входит как составная часть создания проектной документации и на него приходится отнюдь не основная часть работы.
Вроде все.
#11 
scorpi_ скептик27.11.05 23:20
NEW 27.11.05 23:20 
в ответ voxel3d 27.11.05 21:27
Если пишешь используя ОО и процедурные парадигмы, то прочитай книгу Мартина Фaулера "Рефакторинг" и книгу "the gangs of four": "Design Patterns". Эти две книги прочесть обязательно.
Рано ему ещё об этом.
От себя добaвлю: пиши везде комментарии. Параноидально
Не согласен. В самом коде комментарии практически никогда не нужны. Где они действительно нужны - это описание функции: Vor- und Nachbedingungen, аргументы.
В иедале не более пяти строк на метод.
Да ты экстремал. Функции бывают разные, моё правило - должна помещаться на экран.
#12 
Murr коренной житель28.11.05 00:36
Murr
NEW 28.11.05 00:36 
в ответ scorpi_ 27.11.05 23:20
В самом коде комментарии практически никогда не нужны.
------
Если есть нормальная документация на проект - нужны только ссылки на нее.
Но! В случае автора вопроса - писать коментарии, параноидально, можно даже
без кода. По одной из методик обучения, которую я когда-то практиковал в
той стране где сейчас маршируют СС-овцы и уже ищут как остановить поток
эммигрантов, делалось так:
- в "темную", т.е. так, чтобы не видел "сосед", давалось качественное задание и
время на его изучение и задавание вопросов.
- затем задание отбиралось и требовалось не делая код, написать своими словами
что и как должно считаться (повторить постановку задачи).
- затем эти описания просто передавались "соседу" и уже он должен был делать
код.
Разумеется на певый-второй раз ничего не получалось, но была возможность
в живую выяснить что именно было упущено в описании. По прошествии 3-4
занятий люди уже не имели проблем с написанием качественных комментариев
к своему коду.
#13 
Uzbek Мудрый Гудвин28.11.05 09:02
Uzbek
NEW 28.11.05 09:02 
в ответ scorpi_ 27.11.05 23:20
В ответ на:
Да ты экстремал. Функции бывают разные, моё правило - должна помещаться на экран.

Монитор у тебя надеюсь не 30 дюймовый
Снаряды носите бережно, пусть вас видят, а не помнят!!!http://uzbek01.blogspot.com
#14 
scorpi_ скептик28.11.05 09:22
NEW 28.11.05 09:22 
в ответ Uzbek 28.11.05 09:02
Нет, всего лишь 18-дюймовый TFT.
#15 
barmaglot постоялец28.11.05 10:37
barmaglot
NEW 28.11.05 10:37 
в ответ scorpi_ 27.11.05 23:20
От себя добaвлю: пиши везде комментарии. Параноидально
Не согласен. В самом коде комментарии практически никогда не нужны. Где они действительно нужны - это описание функции: Vor- und Nachbedingungen, аргументы.

А по мне -- так лучше параноидально комментировать, чем уже на следующий день смотреть грустными глазами и ничего не понимать. Есть задачи, которые в принципе нельзя раздробить на маленькие, которые по пять строчек кода. Напишешь, например, восемь вложенных ветвлений, а потом смотришь на них и думаешь "мать моя, где ж какое кончается". И в следующий раз, уже помудревший, начало и конец каждого комментируешь.
#16 
Tomasson мумеиси28.11.05 22:21
Tomasson
NEW 28.11.05 22:21 
в ответ voxel3d 27.11.05 21:27
о, *Рефакторинг* у меня даже на русском есть:-)
По *Design Patterns'ам* вот ету книгу очень хвалят:
http://www.amazon.com/gp/product/0596007124
#17 
Tomasson мумеиси28.11.05 22:25
Tomasson
NEW 28.11.05 22:25 
в ответ scorpi_ 27.11.05 23:20
Не согласен. В самом коде комментарии практически никогда не нужны.
Не согласен 8-)
Даже потому, что после тебя возможно кто-то этот код будет смотреть и пытаться понять.
#18 
scorpi_ скептик28.11.05 23:34
NEW 28.11.05 23:34 
в ответ Tomasson 28.11.05 22:25
Выбирай названия переменных и функций подобающим образом, и комментарии будут не нужны.
#19 
Adamas прохожий29.11.05 10:17
NEW 29.11.05 10:17 
в ответ scorpi_ 28.11.05 23:34
Я конечно не великий профессионал, как некотрые, но считаю, что грамотно откоментированый код ничего не заменит. Особенно для новичков ето оптимальный вариант. С опытом програмирования логически правельная структура кода сама установитса. Тем более, что творческий елемент тоже присудствовать должен...
wd360.com
#20 
1 2 все