- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
<?php
class Train {
private $strFrom;
private $strTo;
private $strName;
....................................
public function __construct($arrParameters) {
$objThis = $this;
$objThis->strFrom = $arrParameters['strFrom'];
$objThis->strTo = $arrParameters['strTo'];
$objThis->strName = $arrParameters['strName'];
................................
$intCount = count($arrParameters);
for ($intI = 0; $intI < $intCount; $intI++) {
............................
}
................................
foreach ($arrParameters as $strKey => $mixedValue) {
............................
}
}
....................................
}
Lure Of Chaos 05.07.2010 11:12 # +1
3.14159265 05.07.2010 11:23 # 0
И кстати да, если область использования переменнной по высоте меньше одного экрана - это ставит под сомение её использование, но не факт, что цикл со временем не увеличится, так что - спорно
так что если код по каким-либо причинам будет эдитися в простом редакторе - то это безусловно крайне полезно, ну или автор олдфаг и привык так.
Главное - что у него есть свой стайл. По сравнению с другими творениями этого раздела - это просто конфета, а не код
HyperGeek 05.07.2010 11:52 # +2
tz-lom 05.07.2010 11:51 # +2
$objThis = $this;
обернутся рано или поздно трудноотлаживаемым пиздецом
3.14159265 05.07.2010 12:09 # 0
но это уже вопрос соблюдения принятого стиля
3.14159265 05.07.2010 12:16 # 0
kindofbear 05.07.2010 13:05 # +1
Мистер Хэнки 05.07.2010 17:25 # +1
3.14159265 05.07.2010 17:35 # 0
Мистер Хэнки 06.07.2010 06:15 # 0
Анонимус 06.07.2010 12:31 # −4
Как тут без венгерки?
Это и есть "wrong code looks wrong"
Vasiliy 06.07.2010 17:59 # −4
bugmenot 06.07.2010 07:53 # 0
Анонимус 06.07.2010 01:18 # 0
Во всех остальных случаях (кроме таких языков ;)) -- плохо.
За объяснением смотреть весьма спорную, и местами откровенно лажевую, но все таки очень познавательную и интересную статью Спольски "let the wrong code look wrong".
Смысл в том, что Вы можете случайно написать:
Только я считаю что префикс "obj" не нужен (по умолчанию можно считать объектом) и почему в конструкторе по хешу бродят без коснтант?
Lure Of Chaos 06.07.2010 01:59 # 0
да ну? для хешей (карт) индекс то же что и ключ, и он вполне может быть целочисленным, но не 0..n
h - hash
a - array (тот же хеш только ключи 0..n)
o - object
можно даже вроде
lbl - обьект типа Label
Анонимус 06.07.2010 02:20 # 0
Тоесть $a['1'] есть, и $a[22] есть, а $[2] нету?
Это крайне нездоровая ситуация, imho)
Просто в PHP хеши и массивы выглядят одинаково, и это может привести к путанице (кстати, это одна из причин, почему php causes brain damage (c) -- люди и код начинают путать хеши и массивы): даже в перле они выглядят по разному.
Что бы скомпенсировать эту ляпу языка и гоже юзать разные префиксы.
Lure Of Chaos 06.07.2010 08:28 # −1
в таких случаях даже венгерская нотация не спасет
Мистер Хэнки 06.07.2010 11:07 # 0
>>беспорядочный массив с черт знает какими индексами. Меня
>>помнится долго клинило, в массиве $a=array('a','b') $a[1]='c'
>>сделает нам массив из трех элементов или перезапишет второй?
О_о ... пхп такой пхп
Lure Of Chaos 06.07.2010 11:31 # 0
Анонимус 06.07.2010 12:32 # −1
что выведет print_r такого массива?
Lure Of Chaos 06.07.2010 16:20 # 0
malleus 06.07.2010 12:00 # 0
входящие аргументы функции ты тоже по венгерской нотации обозначаешь? а если нам пофигу на тип, главное что бы квакало? ( duck typing - ну отзывалось на to_s например? )
или функция способна принимать аргументы нескольких типов?
будешь писать несколько функций? или динамически генерировать имена переменных?
Анонимус 06.07.2010 12:22 # 0
doroshenkoes 06.07.2010 13:42 # +2
Анонимус 06.07.2010 13:45 # −2
Это хак, а хаки нужны только когда без них не обойтись.
doroshenkoes 06.07.2010 14:01 # 0
Анонимус 06.07.2010 14:04 # −1
Вас тоже сюда направляю: http://www.joelonsoftware.com/articles/Wrong.html
doroshenkoes 06.07.2010 14:09 # 0
Анонимус 06.07.2010 14:12 # 0
Послушайте, я не хочу пересказывать Спольски) Почитайте его, правда. Он ответит на все вопросы
HyperGeek 06.07.2010 14:59 # 0
All strings that come from the user must be stored in variables (or database columns) with a name starting with the prefix "us" (for Unsafe String). All strings that have been HTML encoded or which came from a known-safe location must be stored in variables with a name starting with the prefix "s" (for Safe string).
Ни намека на тип. Дальше больше:
So in Systems Hungarian you got a lot of dwFoo meaning “double word foo,” and doggone it, the fact that a variable is a double word tells you darn near nothing useful at all.
Надеюсь, Спольски ответил на все вопросы? ;)
Webkill 06.07.2010 15:03 # −1
> Надеюсь, Спольски ответил на все вопросы?
Прозреваю, это он про языки со статической типизацией, типа си. Там можно в любом адекватном ИДЕ, наведя мышку, посмотреть что за тип. К пхп это неприменимо.
HyperGeek 06.07.2010 15:09 # 0
HyperGeek 06.07.2010 15:16 # +3
• Keep functions short.
• Declare your variables as close as possible to the place where you will use them.
• Don’t use macros to create your own personal programming language.
• Don’t use goto.
• Don’t put closing braces more than one screen away from the matching opening brace.
Webkill 06.07.2010 15:42 # −1
3.14159265 06.07.2010 16:20 # −1
1Don’t use macros to create your own personal programming language.
2Don’t use goto.
ЗЫ о УебКилл вернулся
прошу больше не разможатся делением пополам и ссорится как несинхронизированые треды)))
Lure Of Chaos 06.07.2010 16:27 # +2
мля. даж выражаться не хочу, до меня все холивары были
Webkill 06.07.2010 16:46 # −1
malleus 06.07.2010 14:33 # 0
pp obj
и прочие методы вывода все содержимого объекта
HyperGeek 06.07.2010 02:17 # +2
1. При попытке сделать кривой код (такой как в сабже) более поддерживаемым. Например, автор обращается к
$arrParameters как к массиву, хотя от того, что он имеет префикс, массивом может и не быть. К тому же эти
элементы в массиве могут и не существовать. И зачем обходить массив два раза? В общем код потенциально
бажный, и какую нотацию тут не используй лучше он не станет.
2. При особой любви к статической типизации. Вот зачем пытаться эмулировать фичи своего любимого языка там,
где их нет и они вообще не предусмотрены? Как вариант, нужно прекращать травмировать психику себе и
окружающим и юзать наиболее подходящие языки: C#, Java...
Анонимус 06.07.2010 02:46 # 0
окружающим и юзать наиболее подходящие языки: C#, Java...
К сожалению это не всегда возможно.
А приведите пример ситуации, когда венгерка мешает
Lure Of Chaos 06.07.2010 08:36 # +2
опять же, случай с счетчиками и короткоживущими переменными: префикс только удлинит название, а смысловой нагрузки не несет
HyperGeek 06.07.2010 11:34 # 0
Венгерка не сравнима по удобству с документированием (phpdoc) и не должна заменять его. К тому же
падает эффективность автокомплита.
Webkill 06.07.2010 15:14 # +3
Хе-хе, это единственная отличительная фишка бестиповых языков, и люди, юзающие такие языки, пытаются эту фишку обойти как баг. Борьба с собственным инструментом это так весело
doroshenkoes 06.07.2010 13:36 # +2
Самый очевидный пример: я читаю код, смотрю по очереди на переменные и пытаюсь понять, что они содержат. Вместо этой информации я получаю информацию о типе. Этот факт заметно снижает понятность кода
Анонимус 06.07.2010 13:38 # 0
Чем $strId хуже чем $id?
doroshenkoes 06.07.2010 13:59 # 0
Анонимус 06.07.2010 14:02 # −2
Почитайте Спольски, он сказал на эту тему больеш меня:
http://www.joelonsoftware.com/articles/Wrong.html
doroshenkoes 06.07.2010 14:10 # +4