- 1
Как избавиться от говнокода?
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
Как избавиться от говнокода?
Вот есть большой проект в большой корпорации. Ты приходишь и видишь, что архитектура говно, комментариев нет, стиль кода различается в разных частях одного файла, да и в остальных мелочах полный говнокод.
С другой стороны, нужно добавить много разных фич и пофиксить баги, все программисты и ты тоже активно заняты этим, вы приделываете новые костыли и заплатки.
Как с этим бороться? Убеждать менеджера, что вам нужно несколько недель, а то и месяцев на полный рефакторинг всего? Заниматься этим в свободное время? Забить и говнокодить дальше? Уйти в другое место (не факт ведь, что там будет лучше)?
+2
public function generateRequestXml()
{
echo "Start generate request xml\n";
$dt = date("c");
$output = "";
$output .= "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$output .= "\t<request>\n";
$output .= "\t<requestTime>" . $dt . "</requestTime>\n";
$output .= "\t<operatorName>ИМЯ</operatorName>\n";
$output .= "\t<inn>98989898989</inn>\n";
$output .= "\t<ogrn>998545454545</ogrn>\n";
$output .= "\t<email>[email protected]</email>\n";
$output .= "</request>";
if (!file_put_contents(self::REQUEST_FILE, $output))
return false;
}
SimpleXMLElement? Не, не слышал
+2
-- Hehehe
typeGroups ll = (\(t, tt) -> printf "\n~~~~~~~~~~~~~~~\n%s\n~~~~~~~~~~~~~~~\n%s" t (show tt)) >>= (nub . map (_measInfoId &&&(snd .unzip . M.toList . _measTypes)) . (>>= _measInfo) . (>>= _measData)) $ (concat `fmap` mapM (\file -> runX $ readXml file >>> parseFile)) ll
скрипт, высранный в спешке для обработки данных в одной задаче перерос в утилиту
+2
<?
$key = crc32("release") ^ 0x817990;
$header_bg = '#' . substr(base_convert(crc32($DBName) ^ $key, 10, 16), 0, 6);
?>
<div id="top_header" style="background:<?= $header_bg ?>">
На доменах с похожими названиями живут продакшн и версии для разработки. Заказчик путается при тестировании, а потом разрабы удивляются тестовым данным в рабочей базе.
Вот так была реализована цветовая дифференциация штанов сайтов в зависимости от имени БД. Подобрать им имя базы, которое даст коллизию, что ли...
+2
(function ($) {
Drupal.behaviors.kdating = {
attach: function (context, setting) {
var links = $('#field-slideshow-1-pager').find('a');
links.colorbox({ rel: 'gal' });
$.each(links, function (index, value) {
var val = $(value);
var href = val.find('img').attr('src');
var path = href.split('/'),
newPath = path[0] + '//'
+ path[2] + '/'
+ path[3] + '/'
+ path[4] + '/'
+ path[5] + '/'
+ path[9];
val.attr('href', newPath);
});
}
};
})(jQuery);
Парсим ссылки вместе
+2
if ($this->getShowTemplateHints()) {
echo <<<HTML
<div style="position:relative; border:1px dotted red; margin:6px 2px; padding:18px 2px 2px 2px; zoom:1;">
<div style="position:absolute; left:0; top:0; padding:2px 5px; background:red; color:white; font:normal 11px Arial;
text-align:left !important; z-index:998;" onmouseover="this.style.zIndex='999'"
onmouseout="this.style.zIndex='998'" title="{$fileName}">{$fileName}</div>
HTML;
if (self::$_showTemplateHintsBlocks) {
$thisClass = get_class($this);
echo <<<HTML
<div style="position:absolute; right:0; top:0; padding:2px 5px; background:red; color:blue; font:normal 11px Arial;
text-align:left !important; z-index:998;" onmouseover="this.style.zIndex='999'" onmouseout="this.style.zIndex='998'"
title="{$thisClass}">{$thisClass}</div>
HTML;
}
}
Правильная реализация hover эффекта. Яркости для картины добавляет то, что это все написано в блоке MVC модели и понятное дело, на живом проекте.
+2
if (count($not_enough_rights) == 1 and !empty($not_enough_rights['user_extra'])) {
// если нужен доступ только к user_extra, то дополнительного доступа не надо, но скрываем сами права user_extra
} else {
if (count(array_merge($user_rights, $EDIT_ADMIN_GROUPS)) != count($EDIT_ADMIN_GROUPS)) {
$GLOBALS['VALID_GROUPS'] = array('root');
} else {
$GLOBALS['VALID_GROUPS'] = array('superadmin');
}
}
Если $user_rights не пустой, то ты просто админ, если пустой, то суперадмин. Не проставил в БД права - суперадмин!
+2
var data = [];
if(!Ext.isEmpty(val[i][Object.keys(value[i])[0]])) {
data['duration'] = val[i][Object.keys(value[i])[0]]['duration'];
data['count'] = val[i][Object.keys(value[i])[0]]['count'];
data['acd'] = val[i][Object.keys(value[i])[0]]['acd'];
data['asr'] = val[i][Object.keys(value[i])[0]]['asr'];
} else {
data['duration'] = '';
data['count'] = '';
data['acd'] = '';
data['asr'] = '';
}
i++;
if(i>=val.length) {
i = 0;
}
return tpl.apply(data);
+2
public int RowSpan {
get {
int p = HtmlText.IndexOf("rowspan");
if (p > -1) {
int index = HtmlText.IndexOf(" ", p + 8);
int index1 = HtmlText.IndexOf(">", p + 8);
int index2 = HtmlText.IndexOf("/", p + 8);
if ((index > index1) && (index1 != -1))
index = index1;
if ((index > index2) && (index2 != -1))
index = index2;
string s = HtmlText.Substring(p + 8, index - p - 8);
return Convert.ToInt16(s);
} else
return -1;
}
set {
if (value == 0) {
HtmlText = HtmlText.Replace("rowspan", string.Empty);
}
}
}
public int ColSpan {
get {
int p = HtmlText.IndexOf("colspan");
if (p > -1) {
int index = HtmlText.IndexOf(" ", p + 8);
int index1 = HtmlText.IndexOf(">", p + 8);
int index2 = HtmlText.IndexOf("/", p + 8);
if ((index > index1) && (index1 != -1))
index = index1;
if ((index > index2) && (index2 != -1))
index = index2;
string s = HtmlText.Substring(p + 8, index - p - 8);
return Convert.ToInt16(s);
} else
return -1;
}
}
а тут регулярки он не осилил
+2
l =: 3 : 'LF,~":<./(*/,*/"1)(i.2){(\:~,./:~)t=.}.".y rplc LF,'' -_'''
l&.stdin ''
exit ''