Стиль кодирования с описанием типа переменных

zerkms

TDD infected
Команда форума
нет. имена должны быть говорящими и код достаточно ясный, чтобы не приходилось прибегать к пресловутой венгерской нотации
 

Krishna

Продался Java
Однозначно, хороший. Всегда так делаю. Даже более явно $strX, $objX, $intX, $flX, $mxX, $arX, $resX
 

Духовность™

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

Тогда вопрос относительно архитектуры. В этом же livestreet я увидел, что человек использует геттеры в объектах модели:

PHP:
class UserEntity_User extends Entity {
	
	public function getId() {
        return $this->_aData['user_id'];
    }        
    public function getLogin() {
        return $this->_aData['user_login'];
    }
    public function getPassword() {
        return $this->_aData['user_password'];
    }    
    public function getMail() {
        return $this->_aData['user_mail'];
а это, как думаете, хороший стиль? Я вот всё время использовал __get метод и соответственно у меня имена полей объектов были тождественны именам полей в БД, т.е. шло напрямую представление таблицы на объект:

$obj->user_id;
$obj->user_name;
// ...

Подозреваю, что я делал это не правильно, ибо в случае смены имени поля в БД нужно менять весь код вызова свойств.. я лоханулся?
 

soines

Новичок
triumvirat, в данном случае при получении данных можно производить какую-нибудь модификацию данных. DataMapper получается.

А вообще по теме, в php не использую это, использую осмысленные имена. А вот например в С++ уже привычка использовать префиксы i, h, s и т.д. ибо у win api такой стиль и приходится его соблюдать.
 

Adelf

Administrator
Команда форума
Подозреваю, что я делал это не правильно, ибо в случае смены имени поля в БД нужно менять весь код вызова свойств.. я лоханулся?
Нуу.. у тебя куча кусков кода зависят от имени поля в базе. Нехорошо. с геттерами зависимостей меньше.

triumvirat, в данном случае при получении данных можно производить какую-нибудь модификацию данных.
с __get тоже можно какую угодно модификацию проводить.
 

Beavis

Banned
Re: Стиль кодирования с описанием типа переменных

Автор оригинала: triumvirat
Увидел тут: http://trac.lsdev.ru/svn/livestreet/trunk/classes/modules/user/mapper/User.mapper.class.php

$oVar - объект
$iVar - целое
$sVar - строка

как думаете, это хороший стиль кодирования?
тут кто-то на форуме юзал другой стиль - названия объектов с большой буквы, а просто переменные с маленькой..
по-моему, удобно)

т.к. если перепутать объект с обычной переменной, будет фатал еррор, а если int с float'ом, то ничего страшного, соответственно и различать их необязательно)
 

Lightning

Трудоголик
Подозреваю, что я делал это не правильно, ибо в случае смены имени поля в БД нужно менять весь код вызова свойств.. я лоханулся?
Зачем менять весь код? Метод __get() в конкретной модели немного подкорректировать.

-~{}~ 28.04.10 13:39:

Можно использовать __get(), но при этом имена свойств могут быть не равны именам полей.

-~{}~ 28.04.10 13:41:

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

Какая IDE умеет генерить геттеры/сеттеры/конструкторы?
 

shureen

Милорд Лось Кристофер
Я тоже так делаю, очень удобно. А
$oVar - объект
$iVar - целое
$sVar - строка
ну не знаю как другим. Для меня это не читабельно. Лучше имена осмысленные давать (аля самодокумментированый код)
 

Fortop

Новичок
Какая IDE умеет генерить геттеры/сеттеры/конструкторы?
Netbeans, Ecplipse - в какой-то из них помнится, даже меню есть для генерации геттеров/сеттеров по существующим свойствам.
 

AmdY

Пью пиво
Команда форума
натягиваю сайтик, там именование такое. на самом деле очень мешает, автокомплит неудобный, потому что приходится вспоминать тип.
PHP:
$aData
$iDataCount
// удобнее
$data
$dataCount
-~{}~ 28.04.10 16:43:

ах. забыл, что кодом в некоторых местах занимался студент, который не понял значение и у него местами $iData - массив
 

weregod

unserializer
при использовании IDE и документировании
PHP:
/**
 * Some stuff 
 *
 * @var array
 */
$stuff = array();
$aStuff будет избыточно, но иногда приходиться вспоминать про терминалы, в которых никакого автокомплита нет
 

HraKK

Мудак
Команда форума
triumvirat
да ну пля, попробуй потом почитай этот код.
 

Fortop

Новичок
отлично читается.
Особенно если вместо
PHP:
$stuff=array();
используется какой-нибудь
PHP:
$stuff = $server->getTable()->setRowClass('Model_Stuff')->fetchAll($this->getTable()->select()->where('server_id = ?', $this->server_id))->current();
 

shureen

Милорд Лось Кристофер
Согласен с Fortop. А например Zend Studio берет информацию из phpDoc и сразу видно что это и какой тип имеет
 

Adelf

Administrator
Команда форума
Тем более в IDE это все сворачивается обычно в:

PHP:
/**Some stuff ...
$stuff = array();
PHP тег коммент показывает :) ну и лан.
 
Сверху