Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.03.2009, 20:08
wer32 вне форума Посмотреть профиль Отправить личное сообщение для wer32 Найти все сообщения от wer32
  № 1  
Ответить с цитированием
wer32
 
Аватар для wer32

Регистрация: Dec 2008
Сообщений: 88
По умолчанию Алгоритм проектирования программы.

Недавно возникла интересная мысль. А как продумывают свои будущие проекты опытные девелоперы?
Господа поделитесь пожалуйста опытом.

Как вы продумываете сколько классов будет в программе, сколько методов, как они между собой связаны будут.

Что то мне подсказывает при грамотном подходе время проектирования создания приложения снижается и весьма весомо.
Был бы очень благодарен так же за ссылки или литературу где можно прочитать про подобные подходы и рекомендации.

Отлично понимаю что многие вещи приходят только с опытом и временем, но хотелось бы сократить это время и не изобретать велосипед.

З.Ы. желательно разговор вести в контексте action script 3.0 (хотя думаю для всех языков весьма похоже)

Старый 11.03.2009, 20:54
insected вне форума Посмотреть профиль Отправить личное сообщение для insected Найти все сообщения от insected
  № 2  
Ответить с цитированием
insected
 
Аватар для insected

Регистрация: Jun 2006
Сообщений: 164
http://ru.wikipedia.org/?oldid=14304559

Старый 12.03.2009, 02:44
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 3  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Мой совет: для любого выполняемого проекта придумайте пару смежных проектов (которые сходны по тематике, но решают несколько иные задачи) и искомый проект программируйте так, чтобы оно расширялось и до выдуманных

Старый 12.03.2009, 04:22
wer32 вне форума Посмотреть профиль Отправить личное сообщение для wer32 Найти все сообщения от wer32
  № 4  
Ответить с цитированием
wer32
 
Аватар для wer32

Регистрация: Dec 2008
Сообщений: 88
спасибо за советы

во вырыл книженцию. Грят классика может кому понравится, ну вобщем мне подход в описании нравится читается просо и в захлеб а главное примеры есть. К сожалению на C++ тем не мение описание подхода очень широкое и затрагивает все языки.

http://www.helloworld.ru/texts/comp/other/oop/index.htm

s8000_1
до вашего совета покуда еще не дорос. потому и просил чего посоветовать. но совет запомню.

Старый 12.03.2009, 10:26
insected вне форума Посмотреть профиль Отправить личное сообщение для insected Найти все сообщения от insected
  № 5  
Ответить с цитированием
insected
 
Аватар для insected

Регистрация: Jun 2006
Сообщений: 164
Ну паттерны потом почитайте и все остальные книжки этих чуваков и друзей этих чуваков...

Старый 12.03.2009, 14:58
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 6  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Быть может, я не столь опытный по годам - но время от времени приходится заниматься написанием обширных программ.

Во-первых: самый ценный (мой) совет - это не спешить бросаться реализовывать первую попавшуюся идею. Последнюю подобную работу я, например, проектировал на листках бумаги 3 дня и программировал + отлаживал ещё 10 дней. То есть проектирование заняло 25% времени.

Как я это делаю:
Сперва я начинаю "набирать материал". То есть начинаю докапываться как можно дальше - какие именно операции и функциональность должна присутствовать в программе. Выписываю их в виде конечных "мнимых" свойств и методов (в программе, скорее всего, будет по другому). Накапливаемый материал объединяю в такие же "мнимые" классы.

После того, как мне кажется, что я уже прошёлся по всем аспектам программы, и по нескольку раз пересмотрел все мнимые классы - я начинаю проектирование готовой структуры классов. Обычно, по уже готовому, это занимает не много времени.

По итогам "первой итерации" получается вполне хороший приближенный результат будущей структуры программы.

Потом я применяю "бритву Оккамы". Каждый следующий потомок должен добавлять самый наивозможный минимум для того, чтобы реализовать свою функциональность - только то, без чего он уже точно не будет работать. Цепочка наследования растягивается, что придаёт большую открытость к незапланированным изменениям. Кроме того я думаю, что куда лучше перенести, чтобы добиться наибольшей "упорядоченности".

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

Полученный результат я рассматриваю с позиции "нравится/ненравится". В хорошо спроектированном проекте любая вещь "на своём месте" - сразу понятно и для чего она и как её использовать. Если же начинаешь путаться уже глядя на блок-схему - значит, вполне вероятно - будешь путаться и при реализации.

Конечно, бывает не всё гладко - но как правило, такой подход позволяет очень легко разбить работу на простые логичные этапы и сокращает количество ошибок и переписываний уже готового кода.


Последний раз редактировалось Stargazer; 12.03.2009 в 15:04.
Старый 12.03.2009, 21:38
insected вне форума Посмотреть профиль Отправить личное сообщение для insected Найти все сообщения от insected
  № 7  
Ответить с цитированием
insected
 
Аватар для insected

Регистрация: Jun 2006
Сообщений: 164
Проект, занимающий 2 недели работы одного программиста - необширный ) Тут можно особо не заморачиваться )
2 Stargazer: Ну да наверное как то так все и мыслят + все зависит от проекта сильно.

Старый 13.03.2009, 06:15
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 8  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
При реализации проекта первым делом я делаю примерное проектирование — я не стараюсь точно определиться с классами, методами и свойствами, главное выяснить, как должна правильно работать программа, какие функции нужно реализовать раньше, а какие будут зависеть от них и их надо реализовать позже. Дальше идет проектирование классов для основных функций — нет смысла продумывать всю систему на неделю вперед — гадать умеют не все и в итоге получиться все-равно не так, как предполагалось. Следующий этап — реализация основного функционала. Просматриваю систему, ищу слабые места, объединяю общие классы, реализую наследование, где это необходимо. Здесь еще есть два пути — если проект разовый и не требует дальнейшего развития — закрываю глаза на незначительные слабости в проектировании. Если проект планирует развиваться или требуется передача исходников, стараюсь устранить все минусы системы.

Вобщем процесс можно описать так — проектирование на один день -> реализация -> рефакторинг -> следующая итерация.

Рефакторить нужно по мере необходимости, признаки плохого ООП можно найти в сети — основными я считаю это, когда один класс реализует методы другого(утилитные классы не всчет) и "небезопасные" связи между объектами — два класса имеют ссылки друг на друга или доступ к объектам через глобальные статические переменные (синглтон не всчет).

Очень важным я считаю не стараться продумывать все и вся на недели вперед — так будет уходить очень много времени (25 % это слишком) на вещи, которые потом не будут иметь смысла — результат очень сильно разниться с тем, что задумывается заранее.

Это все относится к небольшим проектам (до месяца), с большими я еще дела не имел, но думаю, что там все примерно так же — разница только в том, что конкретизации функциональности отводится больше времени.

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


Последний раз редактировалось Яски; 13.03.2009 в 06:20.
Старый 13.03.2009, 11:07
insected вне форума Посмотреть профиль Отправить личное сообщение для insected Найти все сообщения от insected
  № 9  
Ответить с цитированием
insected
 
Аватар для insected

Регистрация: Jun 2006
Сообщений: 164
Эта тема так обширна, что о ней, навервное, каждый может писать бесконечно. Учитесь, проектируйте, работайте над проектами, приближайтесь к совершенству, это же искусство )

Старый 17.03.2010, 19:50
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 10  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
А кто где рисует структуру классов? Все на бумажках или в голове?

Поставил MS Visio, а там даже наследования нету.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:04.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:04.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.