- 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
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
Сижу такой набираю код
program Project6;
{$APPTYPE CONSOLE}
var i,j: integer;
begin
repeat
readln(j);
i := 0;
if (j=0) then
i := 1
else
break;
Writeln(i);
until false;
end.
[Hint] : Value assigned to 'i' never used
Ну ладно, похер, уберу
program Project6;
{$APPTYPE CONSOLE}
var i,j: integer;
begin
repeat
readln(j);
// i := 0;
if (j=0) then
i := 1
else
break;
Writeln(i);
until false;
end.
[Warning] : Variable 'i' might not have been initialized
_________________
g@@@@@44444*********9444@@@@@@@@@@@Mggg__
g@M" _an**"""""""**Vw=G______"%%@@@@@gg_
,@@` a^" __a=~v-vvv~~,___ _____`"*@gg_
a@@ _M" _m*"` _______ `""""""""""` " "9@g_
@@ a" ,m"_ar*"'` -, ,amv****-~, 9@g
@@ .* u" C ,~ "\ @
d@ ' __gg____ ` @y
g@ ,g@@@@@@@@4@@gg_ C ______ 9@g
g@@.>~. __ a@""@@@@@@__ "9@g ,g@@@@**4@@_ "@g_
g@"$-*""" *Y, @@@@*""**4@@@g__$@C ggg@@@@@@@@@@*" "'" ""Mg`8@g
g@",` ,g@@@@@@@g_ _g@ ""@M" `"@@" *n_"C"@@
g@' p@" ,`"@@@ggggg@@" 8] ,_ _gM@@@@g ' 'C8@
@@ j@ 8@_ `"""' 8@g_ 3@g@@@`, `" ][@
@L 8@ _g@@@@@gg_ _gMMy "9@g_ `""' 8L j8@
@k 3@ d@@@@ "@@@gg_ *""""" @"``___ '@@g_ @@C n" Q@
"@C $ 9k @@_ "8@@@@gg_ @g_fM4@@M g@""" "n. a@@@ _m*3@"
"@g N, 9@@gg_ 8@ `""9@@@gg__" 8gg@M _g@@@d@k a@%
"@@g_' "@@@@@@@@g_ `"8@@@@ggg____ ""` ___gg@@@@ 8@@@ @@
"@g_ '@g `"@@@@gg__ @L `"""4@@@@@@@@@@@@@@@@" @C @@@ 3@
9@_ `@g 3@"9@@@@@@g@ [@ @@ 4@y @kg@@@ [@
9@ 8@gd@ '"9@@@@@@@gggggd@gggggd@gggggg@W@@@@@@@@ [@
8g "@@g @""9@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F [@
@g "@@g_ d@ '""@@@@@@@@@@@@@@@@@@@@@@@$@ 3@
`@g_ "@@@g_j@' @C ``"3@@"""8@""j@'j@g@@ 3@
9@g_ ~__ ~._ `"@@@@g_ @C 8@ g@^ p@^ "@@M @C
"@@g "9m_ "Nq_ "*@@@@ggggg@______@____@@gg@@@@@M" @L
"9@@g_`"Mm_`"Nq_ """"*4@@@@@@@@@@M@@4*"""' 8k
"9@@g_ ""Mm_"*w__ ~~~~ aaa~~ _/ $@
`"@@gg_ "*WG_"*w~.____ ___am*" / [@
"*@@gg `"*-~<.__ ` __M" 3@
"9@gg_ `""'** ------**""` d@
`"@@ggggg__ ,d@
""9@@@@@gg__ __g@"
`""*4@@@@MggggggggM@@@@"
`""""""""""'
Ах тыж крестушок! Как ты мог предать свои корни?
В первом случае с горем пополам сумел продраться через все ветки ифа и понять, что i:=0 или перебивается i:=1 или вообще не используется из-за break, и выдал вполне корректный хинт.
Во втором случае почему-то он до этой мысли уже не допёр... Видимо за оба ворнинга отвечают два разных алгоритма, написанных разными людьми.
P.S. Напомнило историю с HP1018 и говнококабелем в комплекте:
Включаю в режиме usb 2.0: "неизвестное устройство" и нихрена не работает
Переключаю на usb1.1: "это устройство может работать быстрее *trollface.png*"
Я пробовал делать то же самое без цикла с exit вместо break; но тогда одно из предупреждений таки исчезало.
Кстати смотрю я на рейтинг кода, типа что такое, никто не оценивает, потом курсор навёл на цифру, и тут нифига себе.
Дельфиненависники и дельфи любители.
Тут суть в том, что есть Дельфиненависники. Думаю понятно кто это. Это все, кто не относится ко второй группе. А есть дельфи любители. Они любят дельфи, но они пока лишь любители. Но с ростом профессионализма они переплывут эту реку Cтикс из царства мертвой царевны Дельфии Борл`андской.
Да у тебя же батхерт!
Дух делфи... напоминает мне о временах, когда одногруппники просили помочь с лабой/курсовиком... а там вся прога в этих project1, button5, form2... и я матерился, не понимая, как можно страдать таким мазохизмом, когда без подглядки на форму нельзя понять, что за кнопка упоминается в коде...
Это дух паскаля ))
А Project6/Button3 это именно фишка дельфиньего IDE, которое генерит имена в таком стиле, и самих дельфинов, которым влом его переименовать...
Вот что значит - разработка меня испортила.
P.S. А вот все остальное, кроме мелких тестиков (которые я кидаю в /tmp и линукс их оттуда вычищает на следующий день) я стараюсь называть осмысленно, но в сурсконтрол попадает только что-то уж совсем серьезное.
у меня последние 2 месяца на работе такой завал, что даже код ревью у комсомольцев сделать некогда
отвлекаюсь только на говнокод - последний рубеж, который нельзя сдавать
Когда
P.S. А если все-таки a=null убрать - будет вот такая ошибка: variable a might not have been initialized.
И если дописать
final A a=null;
То оно тоже не скомпилится. Отака хуня.
Собственно я и использую джва варианта
Но обычно всё обернуто известным хаком на unchecked.
Жуткий ужас, короче.
Вообще в жабе походу половина умных паттернов - это костыли, связанные с убогостью языка.
Кстати, интересно там происходит связывание интерфейсов, то есть класс, поддерживающий Callable, об этом не соообщает, тогда что же происходит в new Callable<smth>, поиск метода по имени, или всё-таки всё по-крестоблядски разруливается копулятором?
Ну да. Я пришел к схожим размышлениям.
Даже хотел объемный пост сделать с их класификацей.
Например паттерны обертки и копипаста: декоратор, адаптер, заместитель, фасад, прокси - это всё суть одно и тоже. Предельно тупой обёрточный код.
Возьмем к примеру мапу. Её надо синхронизировать. То что в других языках делается через макросы или лямбды в убогой джабе высирается через паттерн:
http://www.docjar.com/html/api/java/util/Collections.java.html
там статический метод. Collections.syncMap(m)
А самое смешное что высрали кучу говна, а итераторы вроде у них остались дырявыми и несинхронными.
Ну то есть Map->keySet->Iterator (тут дырка).
Вот тебе бабушка Тарас и паттерны.
Ага, я заметил в этом файле описания и примеры, в которых добавляли синхронайзед на время пробежки по итератору.
Были бы лямбды - можно было бы передать лямбду в какой-нибудь list.doAtomic(), который бы выполнял ее под своим локом. Но поскольку лямбды черезжопные - must be manually synched by user, и костыли костыли костыли...
>Инкапсуляция, блять, во все поля
Точно!
<<структурный шаблон проектирования, предназначенный для сокрытия деталей реализации, абстракции от реализации>>
Да, перевели как "Совершенный код": http://www.ozon.ru/context/detail/id/3159814/
Изначально я хотел написать всего одну сраную строку:
а получилось то что у борманда в посте.
Что-то получается, что final это какой-то костыль из-за того, что в языке нет конструкции
a = try dosmth(); catch (...) NULL;
val a = try { dosmth() } catch { _ => null }
Ключевое слово такое есть, но только для того, что бы выдавать ошибку, о том, что джава не умеет в него.
Это _не_ костыль. Наоборот с final всё сделано логично и просто.
Минимум ключевых слов. В С# можно и запутаться: sealed, const и readonly. В жабе этот набор заменяет final.
Хоть я Вирта недолюбливаю, но минимализм пришедший из Модулы - это хорошо.
> только для того, что бы выдавать ошибку, о том, что джава не умеет в него.
Как и с goto. Щитаю прально зделали.
Ничего.
http://dlang.org/enum.html
http://dlang.org/const-faq.html
http://dlang.org/const3.html
To make both the return type and the method immutable, you can write:
struct S {
immutable(int[]) bar() immutable
{
}
}
Нигде этого нету, 99% софта написано на языках без этой фичи.
А в js вообще никаких констант нету. И живут люди.
Когда дело дойдет до реально полезного кода - вот тут говно и польется обильным потоком.
Закон работает: количество ошибок говна в программе языке пропорционально его полезности.
Следовательно говна не содержат только никому не нужные языки - brainfuck, D, Haskell, Nemerle.
Исключения составляют программы, учавствующие в космических программах.
Ну вот недавно не взлетел марсоход с оборудованием на миллионы долларов.
Ошибка там была или же просто взорвали пустую ракету - никогда не узнает.
Да и обычно о фейлах умалчивают, а говорят обычно в двух случаях: деваться некуда - говно выплыло, бабки отмыть; жить хорошо можно и на земле - не летая в космос.
ах, боюсь, все полимеры в этой области просраны уже до нас
так, что программисты могут ничего не писать - на результат они не влияют
всё, что ты перечислил - пишут люди
с разной степенью упоротости, конечно
но тем не менее - люди
моя деятельность - примерно в твоем списке
никто никого не петушит, премий не лишают, баги существуют
если в идеальной программе нет бага, это значит, что его пока не нашли
Что если не секрет?
Где баг? Его не нашли, но он есть?
1) в середине запятую забыл
2) в многопоточном приложении эта строчка легко может склеиваться с другим выводом: http://liveworkspace.org/code/4G4ORa$0
> Что если не секрет?
деанон? нет пути
от моих багов люди не умрут, и это неплохо
ничего подробнее фразы: учавствую в проекте системы управления и планирования работы светофорного столба. станет понятно что ты человек важный и если ошибешься, то и человека столбом может придавить
если они поставили подпись на бумажке, что "тестирование проведено, претензий нет", значит их расстреляют первыми
А ты используешь модульные тесты, @defecate-plusplus?
мне стыдно, но практически нет
это всё лень
да и не так уж и много у нас ну совсем независимых частей, которые можно так просто взять и обернуть в mock
а те, которые следует обернуть уже сейчас - их вообще следует выпилить, с позором как недостойные пережитки прошлого, и переписать нормально
с тестами и блекджеком
если будут человеческие ресурсы...
извечные отмазки
> мне стыдно, но практически нет
Как? Ты пишешь проект, по твоим словам, где важно не ошибится, но тесты не используешь - ноу вей! Не слышал о таком. Может ты всеже ничего такого не пишешь? Как такое вообще может быть?
нормально обвешанный тестами проект только процентов на 50 будет состоять из реального кода, остальные 50 будут тестами, да и не так просто для некоторых вещей написать эмуляцию всех случаев, сетевые обмены и прочее
кроме того, компиляция - уже полдела, это не какой-нибудь джаваскрипт в браузерной игре
ну и принимать судьбоносные решения по проектам, распределять трудоресурсы я имею право меньше года, так что за тяжелое наследие без модульных тестов на мне только часть вины
вот как то так
на гейдеве есть один персонаж, его контора пишет ПО для авиадиспетчерской, и еще один персонаж, чья контора пишет ПО для ядерных реакторов
спроси их, сколько в штате программистов и всегда ли у них есть время на обвес модульным тестированием
В крестах я нахожу тесты очень полезными при разработке библиотек, используемых в нескольких независимых проектах. Особенно, если библиотека активно использует шаблоны, т.к. компиляция в таком случае мало что значит, нужно откуда-то инстанциировать шаблон для фактической проверки, и тест - вполне подходящее место. Иначе на косяк наткнутся сразу несколько клиентов, что не есть хорошо.
+ возможность жёсткого рефакторинга нутрей без пробуждения в поту по ночам. Перекурочил, прогнал тесты, сделал коммит, пошёл пить чай.
Почему-то когда я слышу слово покрытие, у меня всплывает ассоциация про подпокрытие покрытия множества и третий семестр матана, который мне когда-то пришлось пересдавать...
суть fear driven development. в первом же месяце попал в топ 3 (второе место). тут и началось. "Твое место возле параши!" перенесли рабочее место к толчку. посадили на табуретку. запретили приходить на работу в любое время. премия сильно упала. расклеили на всех досках фотку прямо с той же табуреткой. меня больше всего расстроила необходимость вставать в одно и тоже время каждый день. думал подать в суд, но те кто так делали - на долго не задерживались. думал уйти, но зная зарплату каллег - не стал.
больше в топ не попадал, хотя на доску с потерей премии регулярно. в топ 3 - туда попадают или новички или распиздяи-неудачники, которым почему то пофиг на все происходящее вокруг и они на окружающих смотрят с принебрежением.
не контора, а мясорубка человеческих судеб
Ну а что, они приходят на работу, отсиживают свои 8 часов нихуя не делая и не особо стараясь писать нормальный код, дальше табуретки ведь уже не выгонят, и получают достаточную для них зарплату. Есть такие люди.
А вообще я против FDD. Такого рода методики очень сильно расшатывают отошения в коллективе.
А ведь гораздо лучше и продуктивней работать, когда коллеги в курилке\на кухне смотрят на тебя не как на говно, сидящее на табуретке, и не как на спихнувшего их с насиженого места и тем самым лишившего премии, а просто как на равного человека, с которым приятно пообщаться или посоветоваться.
Имхо ни к чему вся эта тюремная/армейская дисциплина.
Это какая-то новая версия Borland Developer Studio? Нет, мне и старые не особо нравились.
Ты про шарашки при Сталине вспомнил? Сталин молодец конечно. Здорово придумал
Для объявления лямбды, игнорирующей свой параметер в хаскеле была даже отельная функция или оператор где-то среди апликативных функторов или близкой теме, но я забыл название
Жаль что даже с С++14-17 код
не скомилируется. Вот вроде локоть близок, а не укусишь. Это нововведение в кресты, если кто не понял - вывод типа параметра лямбды
Мутабильность без причины - признак дурачины.
Я решительно не понимаю какая связь между мутабильными переменными и говном? Тебе SICP и Learn You a Haskell for Great Good! мозги промыли чтоли?
Вот в моем примере a должно быть иммутабельной переменной, чтобы дальше я ее случайно не испортил. Если язык будет заставлять меня дописывать к ней mutable только ради того, чтобы я мог присвоить ее в двух ветках ифа - этот язык сраное говно (да, да, кресты, это о вас).
>> мутабельным без причины
Не все мутабельные переменные говно, а только те, которые мутабельные без причины.
?
Да, для такого примера можно тернарник, но если надо выполнить пару строчек - то или писать через запятую в тернарнике, или выносить в отдельную функцию, или убирать конст... Не всегда удобно в общем.
Мне жабий final чуть больше понравился в этом отношении - если компилятор может доказать, что final переменная присваивается ровно 1 раз - то можно хоть 10 ифов.
А с иммутабельностью по дефолту тут и final'ов бы не было.
P.S. Забыл в коде выше типы дописать, а редактирование уже заблокировалось.
С автовыводом типов тут и типов быть не должно.
P.S. Пример и на эклипсовом компилере и на javac из JDK 1.6 ведет себя одинаково.
А с чего бы еще этому оказаться на говнокоде?
Ради мелочей отдельный тред создавать желания нет.
Ну раз Тарас начал...
значит, интуиция меня не подвела
http://govnokod.ru/12472#comment167928
http://govnokod.ru/12472#comment168009
но я это поначалу отверг, думал просто какой то анонимный злодей с цифрами вместо имени возводит напраслину на достопочтимую технологию
а теперь гляжу и, право слово, не знаю что делать
В общем, ТРАЕБЛЯДСКИЕ ПРОБЛЕМЫ
уже обсуждали.
это жабопроблемы.