Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Стиль ведения проекта (http://www.flasher.ru/forum/showthread.php?t=174656)

s3dworld 30.01.2012 15:07

Стиль ведения проекта
 
Всем доброго дня!

Имеется проект с множеством классов. Хочу сделать рефакторинг. Думаю как лучше перестроить структуру проекта...

ВАРИАНТ 1
Складывать классы одного логического значения в один пакет. Например:

Код AS3:

Game/Map/Map.as
Game/Map/MapField.as
Game/Map/MapObject.as
Game/Render/RenderMap.as
Game/Render/RenderField.as
Game/Render/RenderObject.as
Game/Game.as
Utils/MD5.as
main.as

И вот когда я в main.as создаю класс Game:

Код AS3:

import Game.Game;
 
// ...
 
public static var game:Game=null;
 
// ...
 
game=new Game.Game(param1,param2);

Видите как странно идёт создания? Это так в FlashDevelop от наставил Game.Game, и при этом от отказывается подсвечивать параметры конструктора.

ВАРИАНТ 2
Например:

Код AS3:

Game/Map/MapField.as
Game/Map/MapObject.as
Game/Render/RenderMap.as
Game/Render/RenderField.as
Game/Render/RenderObject.as
Game/Map.as
Utils/MD5.as
Game.as
main.as

То есть класс с базовой логикой вынесен из пакета, а в пакете его составляющие.

ВАРИАНТ 3
В качестве имён пакетов не использовать имена классов (ох уж это сложно для меня).

Вообще кто как делает и где какие подводные камни? Я разрабатываю на FlashDevelop. На C++ я на жёстком диске создавал папки в крайних случаях для объединения кода, в основном у меня были фильтры только в самой среде для удобочитаемости структуры проекта. Но в FlashDevelop каждая папка является отдельным пакетом.

TanaTiX 30.01.2012 15:14

Названия классов, в т.ч. Main - с большой буквы, документ-класс делать статически смысла не имеет. Пэкеджы - с маленькой буквы.
Цитата:

То есть класс с базовой логикой вынесен из пакета
Это удобно и нормально.
Пакет формируется при создании используемого класса. По сути - это часть имени класса (собственно так обстоит дело и с файлами в ОС). Хотя не уверен что аналогия подходящая.

Dukobpa3 30.01.2012 15:51

Код AS3:

Game.Game

Вот этот бред потому что имя класса и пакета совпадают с точностью до буквы.
Пакеты принято именовать с маленькой буквы. Как TanaTiX говорит.
В вашем случае ИДЕ просто не может отличить в тексте пакет от класса и потому требует полного имени класса со всеми путями.

Насчет как по папкам раскидывать - да как угодно, как удобно. Это не столь важный вопрос. В любом случае если что-то не понравится то можно будет поперетягивать и будет ок. Правда импорты попереписывать придется, но в ФД это не руками делать так что пофиг.

alatar 30.01.2012 20:24

Вместо перечисления отрывочных и неполных данных следует давать ссылку на текущую конвенцию.

Добавлено через 9 минут
Цитата:

В качестве имён пакетов не использовать имена классов (ох уж это сложно для меня).
Цитата:

Package names
Start them with a lowercase letter and use intercaps for subsequent words: controls, listClasses.

Package names should always be nouns or gerunds (the -ing noun form of a verb), not verbs, adjectives, or adverbs.

A package implementing lots of similar things should have a name which is the plural form of the thing: charts, collections, containers, controls, effects, events, formatters, managers, preloaders, resources, skins, states, styles, utils, validators.

It is common to use a gerund for the name of a package which implements a concept: binding, logging, messaging, printing. Otherwise, they are generally "concept nouns": accessibility, core, graphics, rpc.

A package containing classes that support component FooBar should be called fooBarClasses.
Обычно, пакет именуется так: domain.project.name. Например: com.mydomain.mycoolgame.events. Это позволит избежать конфликтов имен с другими вашими (и не вашими) проектами.

dsQuadro 31.01.2012 13:13

Цитата:

Сообщение от alatar (Сообщение 1060087)
Вместо перечисления отрывочных и неполных данных следует давать ссылку на текущую конвенцию.

кстати в этой конвенции скобочку везде переносят, а тут на форуме я уже неоднократно видел замечания по поводу того что ее переносить не стоит так как же правильно?
так:
Код AS3:

public function():void{
  ...
}

или так:
Код AS3:

public function():void
{
  ...
}

по мне так второй вариант читабильнее, но почему то многие против него

alatar 31.01.2012 13:16

Цитата:

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

dsQuadro 31.01.2012 13:26

ок, молчу.

expl 31.01.2012 13:28

Может быть выбор стиля не столь существенен. Но если Вы работаете в компании и не следуете стилю, принятому там (будь то "египетский" с { на той же строчке или с переносом {) - будут очень сильно бить по рукам и правильно сделают.

iNils 31.01.2012 14:03

Цитата:

Сообщение от alatar (Сообщение 1060222)
По мне тоже, но по этой теме уже столько холиваров было, что не стоит начинать еще один.

Да, очередной холивар на эту тему нам не нужен (К примеру, я считаю скобку на новой строке абсолютно не читабельной :), но вполне либерально к этому отношусь. Кому как удобнее)

Цитата:

Сообщение от alatar (Сообщение 1060222)
Это несущественно, также как и использование пробелов вместо табуляции.

А вот это часть мне абсолютно не понятна. Просто не вижу логики. Пробел всегда фиксирован, в отличии от таба, поэтому каждый может настроить его под себя: 2, 4, 8.

alatar 31.01.2012 14:06

В большинстве IDE количество пробелов точно также настраивается.


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

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