- 1
http://cs543107.vk.me/v543107084/f49c/quBsGLPz-lE.jpg
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+4
http://cs543107.vk.me/v543107084/f49c/quBsGLPz-lE.jpg
Программирование по-русски глазами американцев...
Сериал: "Агенты Щ.И.Т."; Сезон: 3; Эпизод: 13
−1
(* basic power axiom
safe_comp_power x y =
case
(x = 0) and (y <> 0) -> 1
(x = 1) -> x
((x <> 0) and (y >= 0)) or ((x = 0) and (y > 0)) -> x * (safe_comp_power x (y - 1))
*)
logic safe_comp_pow : int, int -> int
axiom safe_comp_pow_int_A_1 : forall x : int. (x <> 0) -> safe_comp_pow(x, 0) = 1
axiom safe_comp_pow_int_A_2 : forall x : int. safe_comp_pow(x, 1) = x
axiom safe_comp_pow_int_A_3 : forall x,y : int. ((x <> 0) and (y >= 0)) or ((x = 0) and (y > 0)) -> safe_comp_pow(x, y) = x*(safe_comp_pow(x,y-1))
goal g_1 :
forall a,n : int.
a <> 0 -> n >= 0 ->
safe_comp_pow(a,n+1) = safe_comp_pow(a,n)*a
Язык для SMT солвера alt-ergo https://alt-ergo.ocamlpro.com/try.php . Аксиомы для возведения в степень. Возводить в отрицательную степень нельзя. Ноль в степени ноль - нельзя. Логика первого порядка. Должна быть справедлива для целых. Правда в одной аксиоме я допустил баг. Я его уже нашел. Можете тоже попробовать найти его
−97
Если Стрк.Контрагент.ИНН = "7702691545" Тогда
ТекДок.Грузополучатель = Справочники.Контрагенты.НайтиПоКоду("000401789");
ИначеЕсли ПоХенкелю Тогда
ТекДок.Грузополучатель = Заявка.Контрагент;
КонецЕсли;
Навряд ли конечно кто-то из тех кто пишет такой код, читает этот сайт, но всё же обращаюсь к ним. Вот скажите, есть какой-то негласный принцип так писать? У вас какой-то орден масонский, где вас так учат делать? Расскажите же про свой негласный кодекс хорошего программиста! Просто я много где поработал, и постоянно в коде такое говно, написанное разными людьми. Генезис такого говна понятен: приходит тупорылый менеджер и приносит не менее тупорылую хотелку, но ведь вы программист, а значит вы должны видеть за деревьями лес.
В каждой задаче нужно видеть за деревьями лес - вот принцип хорошего кода. Если менеджер пришёл 1 раз, он 100% придёт ещё раз, и принесёт подобную задачу. Не лучше ли сейчас немножко посидеть, написать ХОРОШО а в следующий раз решить подобную задачу за 1 минуту и дальше сидеть и пинать говно? Не лучше?!
Что значит хорошо? Хорошо, это когда ваше решение шире задачи, а задача которую вам дали всего лишь частный случай того функционала, который вы реализовали. 1 - Мыслить нужно шире.
Так же надо чётко разделять ту информацию которая хранится в базе, и имена переменных. Если наименование контрагента "Хенкель" то какого члена в тексте делает переменная "КонтрагентХенкель"?! Предопределенные элементы - это максимум хардкода, который приемлем. Вы вообще слышали про компиляцию? Компиляция процесс необратимый, и часто её делать нежелательно, поэтому максимум параметров надо выносить во всевозможные настройки и параметры, чтобы можно было их поменять на ходу. Ладно. Вы всё равно нифига не поймёте.
+5
$temp = $this->user->get($value['user_id']);
foreach ($temp as $var) {
$temp = $var;
break;
}
Просматривал код курсвых по web-программированию, нашел новейший метод извлечения первого элемента массива
−98
Перем ОписаниеФормы;
ОписаниеФормы = Новый Структура;
ОписаниеФормы.Вставить("ТипОбъектаФормы", Неопределено);
ОписаниеФормы.Вставить("ТипФормы", Неопределено);
ОписаниеФормы.Вставить("СсылкаНаОбъектФормы", Неопределено);
ОписаниеФормы.Вставить("СсылкаНаФорму", ФормаКлиента);
Попытка
ОписаниеФормы.Вставить("ТипОбъектаФормы", Метаданные.НайтиПоТипу(ТипЗнч(ФормаКлиента.ОбработкаОбъект)).Имя);
ОписаниеФормы.Вставить("СсылкаНаОбъектФормы", ФормаКлиента.ОбработкаОбъект.Ссылка);
ОписаниеФормы.Вставить("ТипФормы", "Обработка");
Исключение
КонецПопытки;
Попытка
ОписаниеФормы.Вставить("ТипОбъектаФормы", Метаданные.НайтиПоТипу(ТипЗнч(ФормаКлиента.ДокументСписок)).Имя);
ОписаниеФормы.Вставить("СсылкаНаОбъектФормы", Неопределено);
ОписаниеФормы.Вставить("ТипФормы", " ДокументСписок");
Исключение
КонецПопытки;
Попытка
ОписаниеФормы.Вставить("ТипОбъектаФормы", Метаданные.НайтиПоТипу(ТипЗнч(ФормаКлиента.ДокументОбъект)).Имя);
ОписаниеФормы.Вставить("СсылкаНаОбъектФормы", ФормаКлиента.ДокументОбъект.Ссылка);
ОписаниеФормы.Вставить("ТипФормы", "Документ");
Исключение
КонецПопытки;
Попытка
ОписаниеФормы.Вставить("ТипОбъектаФормы", Метаданные.НайтиПоТипу(ТипЗнч(ФормаКлиента.СправочникСписок)).Имя);
ОписаниеФормы.Вставить("СсылкаНаОбъектФормы", Неопределено);
ОписаниеФормы.Вставить("ТипФормы", "СправочникСписок");
Исключение
КонецПопытки;
Попытка
ОписаниеФормы.Вставить("ТипОбъектаФормы", Метаданные.НайтиПоТипу(ТипЗнч(ФормаКлиента.СправочникОбъект)).Имя);
ОписаниеФормы.Вставить("СсылкаНаОбъектФормы", ФормаКлиента.СправочникОбъект.Ссылка);
ОписаниеФормы.Вставить("ТипФормы", "Справочник");
Исключение
КонецПопытки;
Попытка //если в самой форме описан её тип...
ОписаниеФормы.Вставить("ТипОбъектаФормы", ФормаКлиента.ТипОбъектаФормы);
ОписаниеФормы.Вставить("СсылкаНаОбъектФормы", ФормаКлиента.СсылкаНаОбъектФормы);
ОписаниеФормы.Вставить("ТипФормы", ФормаКлиента.ТипФормы);
Исключение
КонецПопытки;
Возврат ОписаниеФормы;
Более "эвристического" метода чем N попыток аффтар видимо придумать не смог. Всё бы ничего, пытайся на здоровье, просто есть люди которые иногда включают режим отладки "остановка по ошибке"... бесит...
−96
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Контрагент,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК ТорговаяТочка,
| 0 КАК ЛимитСумма,
| 0 КАК ЛимитСрок,
| 0 КАК ПросроченаСумма,
| 0 КАК ПросроченоДней,
| 0 КАК ОтгрузкаРазрешена,
| Значение(Документ.РеализацияТоваровУслуг.ПустаяСсылка) КАК Документ,
| 0 КАК Сумма
|";
РезультатЗапроса = Запрос.Выполнить();
ТаблицаДЗ = РезультатЗапроса.Выгрузить();
Результаты.Вставить("АктуальнаяДЗСумма", ТаблицаДЗ);
Кто может объяснить мне сакральный смысл этого запроса?
+1010
$obj = new Task(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null);
Когда аргументов не осталось :(
P.S: Когда конструктор хочет слишком многого (нужно установить всего одно свойство - извещение об ошибке).
+142
http://habrahabr.ru/post/72959/
Сразу прошу извинить...
1. за хабр ;(
1. за баянизм - ссылка на этот пост уже была на гк.
Знаю по опыту, что объекты в делфи инициализируются мусором.
"В Delphi это не представляет никаких трудностей, так как любой объект еще до передачи управления конструктору инициализируется нулями." - выебать бы маму автора сего пёрла.
−105
Г = 0;
Пока Г = 0 Цикл
ПОПЫТКА
Док.РазрешитьОтгрузку = Перечисление.Булево.Да;
Док.Записать();
ИСКЛЮЧЕНИЕ
Сообщить("" + Г + " : Документ " + Док.НомерДок + " заблокирован. Пробую еще раз ...");
Если Г > 20 Тогда
Сообщить("Неудачка...");
Прервать;
КонецЕсли;
КОНЕЦПОПЫТКИ;
Г = Г + 1;
КонецЦикла;
+144
/* Convert IP address to unsigned long int. */
function ip2ulong($ip) {
return sprintf("%u", ip2long32($ip));
}
https://github.com/pfsense/pfsense/blob/master/etc/inc/util.inc#L414-L417
Продолжаем осторожно идти дальше. Это нормально вообще? Да, я видел всякие смехуёчки с магическим приведением типов в PHP и JS, так что наверняка оно где-то правильно конвертится и все работает несмотря ни на что и вопреки. Может, это даже нормальная практика в мире PHP, но мне страшно.