[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос к ООПистам:)
wmlcode
Всем добрый вечер!
Было бы интересно узнать у профи в ооп что является признаками хорошего тона программирования в классах на php. Давно программирую в модулях и недавно начал разбираться в ооп. Знакомый программист глянув в мой класс тут же сказал "во первых призаком хорошего тона является обращение к свойствам через методы". Такие вещи в учебниках не пишут.. интересно сколько еще существует таких правильных и важных тонкостей.. заранее спасиб!



Спустя 5 дней, 5 часов, 22 минуты, 25 секунд (20.11.2007 - 05:08) GMC написал(а):
потому и не пишут, со временем само придет smile.gif

Спустя 15 часов, 26 минут, 50 секунд (20.11.2007 - 20:35) Patrick написал(а):
помоему в книгах по ООП всё написанно...

Спустя 4 часа, 53 секунды (21.11.2007 - 00:36) Bahjahkah написал(а):
Есть одна крылатая фраза: Плохие программисты получаются из тех, которые не хотят следовать традициям в программировании. (За точность донесения не ручаюсь)

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

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

Спустя 3 дня, 2 часа, 24 минуты, 32 секунды (24.11.2007 - 03:00) mcfalu написал(а):
Цитата(wmlcode @ 14.11.2007, 22:46) [snapback]29353[/snapback]
Знакомый программист глянув в мой класс тут же сказал "во первых призаком хорошего тона является обращение к свойствам через методы".

вообще-то я не очень силён в ООП, не профи, только изучаю и применяю, НО в данной фразе подразумевался механизм инкапсуляции.
ООП построено на 3 основных принципах:
- инкапсуляция;
- наследования;
- полиморфизм.
Как они согласованы в php - чесно не скажу(привел пример с С++).
Инкапсуляция предполагает что все что может происходить с свойствами обьекта класса - исключительно работа внутри класса, и например из вне поменять свойство напрямую нельзя, только коственно с помощю методов.
Например:
есть свойство $title;
и есть метод Settitle($str) которое будет задавать это свойство.
По поводу правилам хорошего тона - для начала нужно разобратся в принципах ООП. Чесно сказать до конца сам плохо понимаю некоторые моменты.)

Спустя 12 часов, 7 минут, 20 секунд (24.11.2007 - 15:08) vasa_c написал(а):
Инкапсуляция, это объединение данных и обрабатывающего их кода в одном месте.
Сокрытие к самим основам понятия инкапсуляции не относится.
Есть большое число языков, отлично реализующих ООП, но не осуществляющих сокрытие

Спустя 8 часов, 19 минут, 11 секунд (24.11.2007 - 23:27) phpmaster написал(а):
1. Если вы решили программировать объекты, первое, что вы должны сделать - чётко разделить своё приложение на составные части и ответить себе на такие вопросы:

а) Зачем нужен тот или иной класс?
б) Что он будет делать?
в) Примерный список свойств и методов
и т.д.

2. По поводу хорошего тона. Если начинать с азов, то везде признаком хорошего стиля программирования (не исключая и ООП) является чёткое соблюдение отступов, табуляций и тому подобных вещей. Короче говоря, требуется сделать так, чтобы строка была читаемой.

Следующая вещь - комментарии. Пускай не сильно подробные, но они вам очень помогут, если вы в своих классах начнёте разбираться через полгода после их создания.

Обращение к свойствам через методы - естественно! Это одна из основных причин, по которым стоит применять объектно-ориентированный подход. Я бы к этому ещё добавил говорящие наименования свойств и методов. Согласитесь, что свойства типа myproperty1 и myproperty2 вам спустя некоторый промежуток времени ничего не скажут. Аналогично с методами.

Наконец, должна быть чётко определённая структура классов. Собственно, вы это решите ответив на вопросы из пункта 1. Но суть в том, что если чётко структуру классов/интерфейсов не определить, то потом самому будет очень сложно ориентироваться в программе.

Вот пока всё. Если что вспомню ещё, допишу smile.gif

P.S. Да, по поводу трёх "китов" ООП... все они существуют и проявляются в php. Единственное что - наследование в полной мере можно реализовать только в php5 посредством ключевого слова extends. И помните, что php не поддерживает множественное наследование.

Спустя 1 час, 9 минут, 15 секунд (25.11.2007 - 00:36) vasa_c написал(а):
А php4 чем плох в плане наследования?

Спустя 8 минут, 53 секунды (25.11.2007 - 00:45) phpmaster написал(а):
Я могу ошибаться, но вроде бы там нет "extends"...

Если говорить глобально, то php4 плох хотя бы тем, что уже совсем скоро выйдет php6 =) а ещё тем, что начиная с 1 января 2008 года четвёртая версия php более не поддерживается разработчиками. Думаю, что это достаточно весомые доводы smile.gif

Спустя 41 минута, 6 секунд (25.11.2007 - 01:26) mcfalu написал(а):
в php4 потдерживается наследование посредсвом extends.

Спустя 6 минут, 9 секунд (25.11.2007 - 01:32) vasa_c написал(а):
phpmaster, доводы чего?

Спустя 4 часа, 8 минут, 32 секунды (25.11.2007 - 05:41) Patrick написал(а):
Цитата
Cовсем скоро выйдет php6

c чего вы взяли?
Цитата
Есть большое число языков, отлично реализующих ООП, но не осуществляющих сокрытие

пример плиз...

Спустя 9 часов, 58 минут, 28 секунд (25.11.2007 - 15:39) vasa_c написал(а):
Цитата
пример плиз...

Python, JavaScript

Да даже php4. Не слишком здорово он конечно ООП реализовал, но не думаю что одно только появление private в php5 вывело его на десять уровней выше php4.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.