Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Хорошее ООП?! (http://www.flasher.ru/forum/showthread.php?t=116074)

Nemo_c 19.09.2008 13:27

Хорошее ООП?!
 
Хорошее ООП?!

Хорошее ООП в AS3 это вообще как? Вот смотрю я на код и как мне понять есть там хорошее ООП или нет. А что такое плохое ООП. Как вы сами отличаете xорошее ООП от «тухлого»? :eek:

Snut 19.09.2008 14:04

хм... глубинный вопрос.. но лучше б это во флейм

Nemo_c 19.09.2008 14:11

Почему во флейм? меня интересует ООП с привязкой к AS3, а не про некое абстрактное ооп.

mre 19.09.2008 14:16

Хорошее ООП - это когда внесение каких-либо изменений, дописание модулей, добавление новой функциональности в проект не влечет за собой взрыв мозга.

CEBEP 19.09.2008 14:16

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

wvxvw 19.09.2008 14:49

Вопрос из серии, а как вы отличаете хороший третий закон Ньютона от плохого третего закона Ньютона...

Nemo_c 19.09.2008 15:09

mre, это абстрактное определение, нужна конкретика.

CEBEP,
Цитата:

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

wvxvw, как ваше высказывание связано с моим вопросом?

iNils 19.09.2008 15:11

Цитата:

Как понять что ты уже пришёл к этому идеальному коду?
Это как горизонт, к нему стремишься, но никогда не достигнишь.
Цитата:

Как понять что ты идёшь в направлении мега портабельного и мега оптимизированного кода, а не в обратном направлении?
Опыт подскажет.

Мультипостинг у нас запрещен.

Nemo_c 19.09.2008 15:16

iNils, я спрашивал про критерии.
Критерии идеального кода?
Критерии кода с хорошим ООП?
Критерии кода с плохим ООП
Критерии мегапортабельного кода?

другими словами горизонт мы видим, а критерии кода с хорошим ООП нет.

непонятно к чему стремиться...

Цитата:

Мультипостинг у нас запрещен.
Простите не знал

wvxvw 19.09.2008 15:48

Цитата:

Сообщение от Nemo_c (Сообщение 765028)
wvxvw, как ваше высказывание связано с моим вопросом?

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

CEBEP 19.09.2008 15:59

Ну возьмём к примеру создание Меню для сайта.

Хороший ООП, я думаю это такой, в данном случае:
Код можно использвать для создание разных меню без особых дороботок, все части кода по созданию менюшек и сабменюшек к друг другу не лезут, данные хранятся в xml и доступны для изменения структуры, не должна быть проблема создания меню как горизонтально и вертикально и т.д. что то вроде такого...

Nemo_c 19.09.2008 16:04

to wvxvw
Из книги "ActionScript 3.0 Design Patterns"
Код:

package
{
//This is BAD OOP -- No encapsulation

import flash.text.TextField;
import flash.display.Sprite;
public class NoEncap extends Sprite
{
public var dogTalk:String="Woof, woof!";
public var textFld:TextField=new TextField( );
public function NoEncap( )
{
addChild(textFld);
textFld.x=100;
textFld.y=100;
}
function showDogTalk( )
{
textFld.text=dogTalk;
}
}
}

Код:

package
{
//This is GOOD OOP -- It has encapsulation
import flash.text.TextField;
import flash.display.Sprite;
public class Encap extends Sprite
{
private var dogTalk:String="Woof, woof!";
private var textFld:TextField=new TextField( );
public function Encap( )
{
addChild(textFld);
textFld.x=100;
textFld.y=100;
}
function showDogTalk( )
{
textFld.text=dogTalk;
}
}
}

William Sanders и Chandima Cumaranatunge видимо не знакомы с вашей концепцией и поэтому пишут всякую "чушь" в своей книге.

to CEBEP.
Нужны критерии в терминах ООП и AS3(как то так), а своими словами вы сейчас говорите абстрактно.

wvxvw 19.09.2008 16:09

>> William Sanders и Chandima Cumaranatunge видимо не знакомы с вашей концепцией и поэтому пишут всякую "чушь" в своей книге.

Именно так.

Да, и кавычки к чушь абсолютно ни к чему.

Chas 19.09.2008 16:10

чё-то или я тупой, или приведенный выше код отличается только именем класса и конструктора о_О
добавлено
а, господи, нада кофе выпить, свойства сделал приватными. Но это не лучший пример инкапсуляции. Это как раз тот случай, когда "инкапсуляция ради инкапсуляции"

wvxvw 19.09.2008 16:20

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

Chas 19.09.2008 16:30

Ну это ты перебарщиваешь. Где там дрова-то?
Как пример инкапсуляции - пример плохой. Нужно было что-то с геттерами и сеттерами придумать, где необходимо спрятать переменную, которую сеттер меняет, чтобы ее не трогали.
А так - обычный код, где там дрова-то? То, что showDogTalk не public функция?

wvxvw 19.09.2008 16:37

Нет явного вызова super()
У метода отсутствует модификатор доступа / неймспейс.
У метода отстутствует возвращаемый тип.
Приватные переменные - это первый шаг на пути усложнения реюз / полиморфизма, в этом примере они должны были быть protected. (т.е. показав пример одного из принципов ООП тут же забили на остальные - офигительный мануал...)

Помоему, этого достаточно, чтобы закрыть эту книжку, и почитать чего-нибудь другое =)

ЗЫ. И вообще, классный мануал, если ты его просто копипастишь, компилируешь, и компилятор тебе ворнинг выдает? :D И это в двух с половиной строчках, чего ж там дальше-то будет? =)

Nemo_c 19.09.2008 16:38

Цитата:

при этом наломав столько дров, что глядя на такой код, думается, что есть люди, которым лучше все-таки читать книги, а не писать их =)
АГА, Значит плохой ООП код всё таки существует? как и существует плохой третий закон Ньютона.
Где в приведённом мною примере дрова наломаны? И как вы это определили?

Цитата:

показав пример одного из принципов ООП тут же забили на остальные
не, про остальные они пишут дальше.. это пример из начала книги.

wvxvw 19.09.2008 16:42

Существует плохо написаный код - вы только что запостили 2 примера. А ООП это понятие, которое нельзя характеризовать с позиций дуализма - оно не на столько комплексное.

Chas 19.09.2008 16:48

Цитата:

Приватные переменные - это первый шаг на пути усложнения реюз / полиморфизма, в этом примере они должны были быть protected. (т.е. показав пример одного из принципов ООП тут же забили на остальные - офигительный мануал...)
ну это не аргумент, это зависит от целей. Может он в этом случае именно хотел запретить детям видеть свойство.
Цитата:

У метода отсутствует модификатор доступа / неймспейс.
ну это тоже не аргумент. Он же не собственную библиотеку пишет, а простой пример.
Все остальное - да. Но вообще я, походу,сам плохой ООП-программер, потому что частенько эти вещи опускаю из-за лени. Следствие небольших проектов, которые пишу обычно исключительно один.

wvxvw 19.09.2008 16:58

Вложений: 1
>> ну это тоже не аргумент.
Ого, ничего себе не аргумент? Это именно то место, где компайлер ругаться будет =)))) Модификатор доступа должен быть всегда, без исключений.

>> Может он в этом случае именно хотел запретить детям видеть свойство.
Запрещать детям видеть свойства родителей - это исключение из правила, и уж ни в коем случае не "типичная" ситуация, которую предположительно должен рассматривать мануал. Просто у чела привычка осталась с АС2 - вот и все объяснение, никакой другой логики в написаном нет.

В аттаче - то что думает по поводу вашего кода компилятор :)

Chas 19.09.2008 17:08

Почему компайлер ругаться будет? У меня стоит strict mode и никто не ругается. По умолчанию используется internal, это всем известно, зачем мне это слово каждый раз писать.

wvxvw 19.09.2008 17:11

Смотри аттач в предыдущем посте. И включи show warnings. Иногда очень помогает, особенно, если пользуешься ФДшным код-генератором или еклипс-мaнки ;)

Chas 19.09.2008 17:38

эм. и warnings mode стоит включеный.
Ругается только на вещи типа
Цитата:

Warning: 1090: Migration issue: The onKeyDown event handler is not triggered automatically by Flash Player at run time in ActionScript 3.0. You must first register this handler for the event using addEventListener ( 'keyDown', callback_handler).
ты в чем компилируешь? Eclipse?

wvxvw 19.09.2008 18:07

Компилирую mxmlc.exe ну, как бы не принципиально откуда... это в настройках компайлера. В ФД это можно задать в настройках проекта, в ФБ, почти наверняка тоже, ну, максимум, если нет - то подправить билд файл вручную, но, не думаю, что все на столько запущено =) В ФДТ тоже 100% должно быть =)

Это, первый ворнинг - 1085
второй - 1009
Смотреть весь список тут: http://livedocs.adobe.com/flash/9.0/...lerErrors.html
Зря чтоли люди мучались-писали? =)

ramshteks 19.09.2008 19:07

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

Chas 19.09.2008 19:21

я компилирую из flash ручками. Родной компилятор так не ругается.

wvxvw 19.09.2008 20:02

Вложений: 1
А как это mxmlc стал неродным компилятором? :D Он даж более родной для АС3 =) Собственно, с ним по большей части все и работают... Это такой же продукт Adobe / MacroMedia как и Flash =) За что ж его так-то?

ЗЫ. Я могу попробовать компилировать ногами... например, но для этого мне прийдется залезть на стол и нажимать кнопки на клаве пальцами ног... ну, не знаю, ради эксперемента можно попробывать... но делать так постоянно я бы не стал =)

Во, у него даже иконка адобовская, заскринил для большей убедительности =)

iNils 19.09.2008 20:13

Цитата:

Сообщение от Chas (Сообщение 765126)
я компилирую из flash ручками.

Как же люди себя не любит.
Можно еще писать код дома, а компилить бегать к соседу этажом ниже или еще лучше в другой подъезд.
У нас сейчас минимум три редактора для кода: FlexBuilder, FDT и FD, который позволяют компилить прямо на месте, вообще не создавать fla или используя swc файлы.

Chas 19.09.2008 22:50

дык я кодю в FD.
А компилирую alt-tab + ctrl-enter. Потому что компилировать не создавая фла мне показалось неудобным. Так же как делать интерфейсы mxml. Помоему ручками в ide намного проще разместить.

fljot 19.09.2008 23:04

Chas, ну разместить один раз, а потом чего туда лазить

Fernando Costa 20.09.2008 16:42

alt-tab + ctrl-enter == F6

wvxvw 20.09.2008 16:42

По поводу MXML - я пока еще много чего о нем не знаю, но учусь =) И чем дальше, тем он мне больше нравится =) Пока, самая его прелесть в том, что лей-ауту можно довольно просто задавать шаблоны, т.е. можно, пользуясь, например, XML_MXML либой для PHP довольно быстро сделать лей-аут для уже готовых темплейтов, типа ВордПресса / Джумлы. Т.е. верстка во Флеше от верстки во Флексе отличается примерно на столько же, на сколько отличается верстка статической ХТМЛ странички, от настройки шаблона, чтобы он отображал разный контент в зависимости от настроек.

Т.е. представь, вот нужно сделать страничку, которая бы отображалась немного по-разному в зависимости от того, какие привилегии есть у юзера, который на нее смотрит - во флеше ты бы либо делал 2 разные флешки, либо одну, которая бы загружала в себя разный контент (но эту логику загрузки не всегда хочется держать на клиенте)... вобщем гемор, да и не по-научному =) А так - отправляется запрос к ПХП типа моястраничка.пхп?админ=тру и в ответ тебе отправляется флешка с админскими возможностями, а нет - так отправляется флешка, в которой этих возможностей нет. При этом ты верстал не флешку, а шаблон, в котором может быть сотня этих разных настроек... Вобщем, да чего я рассказываю =) это нужно пробовать самому, тогда становится понятнее =)

terbooter 22.09.2008 10:31

Похоже автора (крутого флешера) развернули на собеседовании (страшным словом "плохое ООП") вот теперь он переполнен негативом и ищет правду -)

Теория ООП не привязана к какому-то языку, тк это абстракция более высокого уровня. Рекомендую почитать Гамму "Design Patterns"

Яски 23.09.2008 07:23

Хорошее ооп приходит с опытом :). Вот я кодю особо об этом не задумывась, главное чтобы удобно было - а через некоторое время понимаю, что где-то можно было сделать лучше, правильнее. Но основных методик стоит придерживаться всегда.

FlexOkeks 23.09.2008 09:22

Цитата:

Сообщение от Nemo_c (Сообщение 765035)
Критерии кода с хорошим ООП?
Критерии кода с плохим ООП

Крошка сын к отцу пришел и спросила кроха, ООП есть хорошо, или все же плохо?
Хорошо это когда выгодно/умело используешь имеющиеся возможности/инструменты, в ООП это инкапсуляция, наследование и еще чего-то. А плохо, это когда мобильным телефоном забиваешь гвозди! Критерии могут быть разные в зависимости от конкретного кода/подхода ;)

Nemo_c 23.09.2008 23:01

Вообщем кроме wvxvw никто больше по делу не написал, отсюда сделаю вывод что остальные, написавшие, знают ООП так же как я, т.е. мало знакомы с ним или думают что знают. Спасибо.

BlooDHounD 23.09.2008 23:52

Nemo_c, ммм .. тоесть не берётся в расчёт, интерес к теме? интерес беседы с автором? тупость вопроса? лень? нежелание флэймить? и ещё куча причин?

etc 23.09.2008 23:58

Цитата:

Сообщение от Nemo_c (Сообщение 765902)
Вообщем кроме wvxvw никто больше по делу не написал, отсюда сделаю вывод что остальные, написавшие, знают ООП так же как я, т.е. мало знакомы с ним или думают что знают. Спасибо.

С подобными выводами вам в прокуратуру надо идти работать. :quiet:

Nemo_c 24.09.2008 00:40

BlooDHounD, повторю свою фразу которая видимо вас задела(хотя по идее не должна была).
Цитата:

отсюда сделаю вывод что остальные, написавшие, знают ООП так же как я
Где вы здесь нашли себя, или я что то сказал про промолчавших?

Про тупость вопроса... очевидно я вопрос таким образом сформулировал не просто так :-)

Цитата:

Сообщение от __etc (Сообщение 765909)
С подобными выводами вам в прокуратуру надо идти работать. :quiet:

мне больше нравится отдел HR, или отдел при инвестиционной фирме который решает давать деньги под IT проект или нет :-) чувствую зарубил бы кучу чудных молодых проектов по причине не компетентности
реализаторов этих проектов... кучу бабла бы с экономил... :D:


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

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