- 1
if(copytype==WHOLE_FILE) //whole file
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+8
if(copytype==WHOLE_FILE) //whole file
О пользе комментариев
+2
Как избавиться от говнокода?
Вот есть большой проект в большой корпорации. Ты приходишь и видишь, что архитектура говно, комментариев нет, стиль кода различается в разных частях одного файла, да и в остальных мелочах полный говнокод.
С другой стороны, нужно добавить много разных фич и пофиксить баги, все программисты и ты тоже активно заняты этим, вы приделываете новые костыли и заплатки.
Как с этим бороться? Убеждать менеджера, что вам нужно несколько недель, а то и месяцев на полный рефакторинг всего? Заниматься этим в свободное время? Забить и говнокодить дальше? Уйти в другое место (не факт ведь, что там будет лучше)?
+5
if (logsData.Count == 1) {
msg += logsData [logsData.Count - 1] + "\n";
} else if (logsData.Count == 2) {
msg += logsData [logsData.Count - 2] + "\n";
msg += logsData [logsData.Count - 1] + "\n";
} else if (logsData.Count == 3) {
msg += logsData [logsData.Count - 3] + "\n";
msg += logsData [logsData.Count - 2] + "\n";
msg += logsData [logsData.Count - 1] + "\n";
} else if (logsData.Count == 4) {
msg += logsData [logsData.Count - 4] + "\n";
msg += logsData [logsData.Count - 3] + "\n";
msg += logsData [logsData.Count - 2] + "\n";
msg += logsData [logsData.Count - 1] + "\n";
} else if (logsData.Count >= 5) {
msg += logsData [logsData.Count - 5] + "\n";
msg += logsData [logsData.Count - 4] + "\n";
msg += logsData [logsData.Count - 3] + "\n";
msg += logsData [logsData.Count - 2] + "\n";
msg += logsData [logsData.Count - 1] + "\n";
}
+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? Не, не слышал
−99
Функция ПолучитьПолныйСписокКонтрагентовОтбора(текКонтрагентыОтбора) // релиз 3.0
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Контрагент.Ссылка КАК Ссылка1
|ИЗ
| Справочник.Контрагенты КАК Контрагент
|ГДЕ
| Контрагент.ЭтоГруппа = ЛОЖЬ И ("; ы=0;
Для каждого ЭлСпОтбКг из текКонтрагентыОтбора Цикл текКг=ЭлСпОтбКг.Значение;
Если ТипЗнч(текКг)=Тип("СправочникСсылка.Контрагенты") И НЕ текКг=Справочники.Контрагенты.ПустаяСсылка() Тогда ы=ы+1;
Если текКг.ЭтоГруппа Тогда Запрос.Текст = Запрос.Текст +"
| "+?(ы=1,"","ИЛИ ")+"Контрагент.Ссылка В ИЕРАРХИИ(&тКг"+Строка(ы)+")";
Иначе Запрос.Текст = Запрос.Текст +"
| "+?(ы=1,"","ИЛИ ")+"Контрагент.Ссылка = &тКг"+Строка(ы);
КонецЕсли;
Запрос.УстановитьПараметр("тКг"+Строка(ы),текКг);
КонецЕсли;
КонецЦикла; Запрос.Текст = Запрос.Текст +"
|)";
РезСп=Новый СписокЗначений;
текТЗрег=Запрос.Выполнить().Выгрузить();
РезСп.ЗагрузитьЗначения(текТЗрег.ВыгрузитьКолонку("Ссылка1"));
Возврат РезСп;
КонецФункции
−96
Функция мПолучитьДанныеПоОтсрочкеОплатыРТУнаДт(тРТУ, тДт, тНедоплатаПоРТУ, теРегЗапись="", текЗаказыПокупателей="", текЗнакЗаказыПокупателей="=", текОтрицаниеЗнакаЗаказыПокупателей=Ложь, тРазрешенныхДнейОтсрочки=0, тМаксДеньПогашения="", КЛ_тРТУ="" , тРТУ_Дата="", тСтрокаТЗотчета, УровеньПоЕжеМесКва=0) // релиз 3.3 доб. , тСтрокаТЗотчета , УровеньПоЕжеМесква=0 // релиз 3.1 доб. , тРТУ_Дата=""
текРТУ_Дата=?(ТипЗнч(тРТУ_Дата)=Тип("Дата") И НЕ тРТУ_Дата='00010101', тРТУ_Дата, тРТУ.Дата); // релиз 3.1 доб.
//...
КЛ_тРТУ=теРегЗапись.теРегистратор; тЕстьЕжемес=теРегЗапись.ДеньПогашенияМесяц>0 И теРегЗапись.ДеньПогашенияМесяц<=31;
тЕстьЕжеква=теРегЗапись.ДеньПогашенияКвартал>0 И теРегЗапись.ДеньПогашенияКвартал<=31;
Если тЕстьЕжемес И теРегЗапись.ДеньМесяцЭтоСледующийЗаОтгрузкой Тогда
тМаксДеньПогашения=Мин(Дата(Год(ДобавитьМесяц(текРТУ_Дата,1)),Месяц(ДобавитьМесяц(текРТУ_Дата,1)),теРегЗапись.ДеньПогашенияМесяц), теРегЗапись.ДатаОкончания); // релиз 3.1 зам. тРТУ.Дата на текРТУ_Дата
ИначеЕсли тЕстьЕжеква И Найти("/3/6/9/12/","/"+Строка(Месяц(текРТУ_Дата))+"/")<>0 И теРегЗапись.ДеньПогашенияКвартал>День(текРТУ_Дата) Тогда // релиз 3.1 зам. тРТУ.Дата на текРТУ_Дата
тМаксДеньПогашения=Мин(Дата(Год(текРТУ_Дата),Месяц(текРТУ_Дата),теРегЗапись.ДеньПогашенияКвартал), теРегЗапись.ДатаОкончания); // релиз 3.1 зам. тРТУ.Дата на текРТУ_Дата
ИначеЕсли тЕстьЕжемес И ?(Найти("/3/6/9/12/","/"+Строка(Месяц(текРТУ_Дата))+"/")=0,Истина,НЕ тЕстьЕжеква) И теРегЗапись.ДеньПогашенияМесяц>День(текРТУ_Дата) // релиз 3.1 зам. тРТУ.Дата на текРТУ_Дата
И НЕ(УровеньПоЕжеМесКва=1) Тогда // релиз 3.3 доб. строку
тМаксДеньПогашения=Мин(Дата(Год(текРТУ_Дата),Месяц(текРТУ_Дата),теРегЗапись.ДеньПогашенияМесяц), теРегЗапись.ДатаОкончания); ПроверитьЕжеМесКваНаНеполноеПогашение(1,теРегЗапись,тСтрокаТЗотчета); // релиз 3.3 доб. ПроверитьЕжеМесКваНаНеполноеПогашение(1,теРегЗапись,тСтрокаТЗотчета); // релиз 3.1 зам. тРТУ.Дата на текРТУ_Дата
ИначеЕсли тЕстьЕжеква И Найти("/3/6/9/12/","/"+Строка(Месяц(ДобавитьМесяц(текРТУ_Дата,1)))+"/")<>0 Тогда // релиз 3.1 зам. тРТУ.Дата на текРТУ_Дата
тМаксДеньПогашения=Мин(Дата(Год(ДобавитьМесяц(текРТУ_Дата,1)),Месяц(ДобавитьМесяц(текРТУ_Дата,1)),теРегЗапись.ДеньПогашенияКвартал), теРегЗапись.ДатаОкончания);ПроверитьЕжеМесКваНаНеполноеПогашение(2,теРегЗапись,тСтрокаТЗотчета); // релиз 3.3 доб. ПроверитьЕжеМесКваНаНеполноеПогашение(2,теРегЗапись,тСтрокаТЗотчета); // релиз 3.1 зам. тРТУ.Дата на текРТУ_Дата
ИначеЕсли тЕстьЕжемес
И НЕ(УровеньПоЕжеМесКва=1 И тМаксДеньПогашения>=Мин(Дата(Год(ДобавитьМесяц(текРТУ_Дата,1)),Месяц(ДобавитьМесяц(текРТУ_Дата,1)),теРегЗапись.ДеньПогашенияМесяц), теРегЗапись.ДатаОкончания)) Тогда // релиз 3.3 доб. строку
//...
тМаксДеньПогашения=НачалоДня(тМаксДеньПогашения);
тРазрешенныхДнейОтсрочки=(тМаксДеньПогашения-НачалоДня(текРТУ_Дата))/(24*60*60); // релиз 3.1 зам. тРТУ.Дата на текРТУ_Дата
Возврат (тМаксДеньПогашения-НачалоДня(тДт))/(24*60*60);
КонецФункции
Там, говорят, работы на час: посмотреть как в отчете данные собираются и перенести то, что надо. Открываю отчет, а там с два десятка вот таких функций и процедур. Орфография и пунктуация сохранена, жаль вся функция не поместилась.
+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
скрипт, высранный в спешке для обработки данных в одной задаче перерос в утилиту
0
$HighSpeed = new HighLoad();
$redis = new Redis();
$redis->connect($HighSpeed->passwd);
$redis->auth('ХХХХХХХХХХХХХХХ');
$redis->select(1);
Всё что после первой строки уже реализовано в самом классе
−2
$( '.radio-check-value' ).on( 'change', '.check_value', function(){
var checkedVal = $( this ).val();
console.log( checkedVal );
var nonCheck = checkedVal == 'default' ? 'measure' : 'default';
var parentBlock = $( this ).parent().parent();
if( parentBlock.find( '[data-units=' + checkedVal + ']' ).hasClass( 'nonactiv' ) ){
parentBlock.find( '.count-units.' + nonCheck ).removeClass( 'active' );
parentBlock.find( '.count-units.' + nonCheck ).addClass( 'nonactiv' );
parentBlock.find( '[data-units=' + nonCheck + ']' ).removeClass( 'active' );
parentBlock.find( '[data-units=' + nonCheck + ']' ).addClass( 'nonactiv' );
parentBlock.find( '[data-units=' + checkedVal + ']' ).removeClass( 'nonactiv' );
parentBlock.find( '[data-units=' + checkedVal + ']' ).addClass( 'active' );
parentBlock.find( '.count-units.' + checkedVal ).removeClass( 'nonactiv' );
parentBlock.find( '.count-units.' + checkedVal ).addClass( 'active' );
parentBlock.find( '.check_value.' + nonCheck ).removeAttr( 'checked' );
}
} );
Обработчик нестандартного поведения чекбоксов.
−96
Если ОтражатьВБухгалтерскомУчете = Истина Тогда
Если Лев(Номер, 3) <> ТекПрефикс Тогда Номер = ""; УстановитьНовыйНомер(); КонецЕсли;
Иначе
Если Лев(Номер, 3) = ТекПрефикс Тогда Номер = ""; УстановитьНовыйНомер(); КонецЕсли;
КонецЕсли;
В чем смысл проверки на соответствие префиксу остается только гадать...