+88
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
//До рефакторинга
static function initConnectOnce(){
$who = get_called_class();
if(!$GLOBALS[$who][class_cllct]){
$db = new DataBase();
$GLOBALS[$who][class_cllct] = $db->selectCollection(get_called_class());
}
return $GLOBALS[$who][class_cllct];
}
//После
public static function initCollectOnce(){
$who = get_called_class();
$cllct = &self::$cacheCollect[$who];
if(!$cllct){
$db = new DataBase();
$cllct = $db->selectCollection($who);
}
return $cllct;
}
Недавно начал рефакторить свой же код. Нашел такой вот незаметный гавнокод...
Для тех кто в танке =)
1. selectCollection(get_called_class()) - зачем вызывать по второму разу, если результат уже есть в переменной $who.
2. $GLOBALS[$who][class_cllct] - немного глюкнуло наверное, когда писал... Логичнее так $GLOBALS[class_cllct][$who].
3. initConnectOnce - тут даже наверное не Connect должно быть, а Collect.
4. Вместо $GLOBALS[$who][class_cllct] лучше(имхо) заюзать статичное свойство для класса.
5. static function initConnectOnce - забыл public описать....
Запостил: haker,
11 Февраля 2013
haker 11.02.2013 13:24 # +1
И очень много моментов для оптимизации..
bormand 11.02.2013 13:47 # 0
Экономия на спичках гласных буквах, или культ медведя-наркомана Вонни?
haker 11.02.2013 13:52 # 0
Но на деле хоть какая то экономия (ведь для коротких имен хэш переменной вычисляется быстрее), да и в привычке уже писать такие короткие имена.
Конечно не в ущерб понятности
bormand 11.02.2013 14:00 # +3
Вот и делай вам языки высокого уровня... То кавычки одинарные быстрее работают (миф развеян), то foreach тормозное говно (миф развеян), то хеши от имен переменных быстрее считаются... На сколько наносекунд? ;) Да один SQL запрос сожрет весь эффект от этих микрооптимизаций и не подавится...
haker 11.02.2013 14:11 # −4
roman-kashitsyn 11.02.2013 14:56 # +3
haker 11.02.2013 15:12 # −2
Данные разношерстные (а MongoDB ведь больше подходит для этого, нету строгого формата данных).
Тут даже не замена MySQL на MongoDB, а изначально использовался MongoDB в проекте.
eth0 11.02.2013 15:58 # −3
Не надо выдавать человеку такие секретные дзен-тайны, а то в самом деле перепишет на апострофы и всё заработает быстрее!
roman-kashitsyn 11.02.2013 16:00 # +4
haker 11.02.2013 16:38 # +2
bormand 11.02.2013 16:08 # −2
Въебал всем по минусу? ;)
eth0 12.02.2013 19:54 # −2
zim 11.02.2013 15:20 # −2
ORURO
guest 15.02.2013 14:07 # −2
haker 15.02.2013 14:29 # −1
bormand 15.02.2013 15:13 # 0