+126
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
string[] days = { "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat" };
// This method finds the day or returns -1
private int GetDay(string testDay)
{
int i = 0;
foreach (string day in days)
{
if (day == testDay)
{
return i;
}
i++;
}
return -1;
}
http://msdn.microsoft.com/en-us/library/2549tw02%28v=vs.80%29.aspx
Я, мягко говоря, прифигел с этого. Одно дело, если бы это была какая-нибудь лаба, но это, блиать, целый велосипед вместо одного единственного Array.IndexOf, да ещё и в таком общедоступном месте...
Запостил: RaZeR,
13 Июня 2013
eth0 13.06.2013 18:24 # 0
kegdan 14.06.2013 00:09 # −4
private int GetDay(string testDay)
{
int i;
for (i=days.Length-1;i>-1;i--)
if(days[i] == testDay) break;
return i;
}
Так покрасивше (Я имею в виду если Array.IndexOf не юзать)
anonimb84a2f6fd141 14.06.2013 02:17 # −2
kegdan 14.06.2013 03:52 # −4
Тут не понятно, что лучше - контекста нет. Может массив строк - самое то в данном контексте.
neeedle 14.06.2013 05:41 # 0
Люди учат работать с индексами, какой там цикл используется вообще не важно.
Да и к тому-же в цикле for переменные можно сразу определять:
for (int i=days.Length-1;i>-1;i--)
kegdan 14.06.2013 05:45 # 0
wvxvw 14.06.2013 08:21 # −2
ЗЫ. Понимаю, что это не преступление, но когда ставят лишние скобки после return - мне мерзко становится.
bormand 14.06.2013 08:45 # 0
wvxvw 14.06.2013 08:46 # 0
kegdan 14.06.2013 08:53 # 0
// This method finds the day or returns -1
private int GetDay(string testDay)
{
int i = 0;
foreach (string day in days)
{
if (day == testDay)
{ //вот одна
return i;
} // вот вторая
i++;
}
return -1;
}
bormand 14.06.2013 08:56 # 0
А эти { скобки } это тема другого холивара - ставить ли фигурные скобки вокруг примитивных операций или нет.
wvxvw 14.06.2013 09:48 # 0
Там в примере есть вот такой геттер. Это я его имел в виду.
kegdan 14.06.2013 08:52 # 0
wvxvw 14.06.2013 09:44 # +2
Смысл в том, что код в документации, если и не совсем говно, то совсем не на уровне ожидаемом от серьезного источника.
Большинство кода, которого я видел в своей жизни написано неадекватными людьми, которые хорошо если бы в MSDN заглядывали, обычно они бы предпочли партию в спайдер солитер вместо.
Я сейчас занимаюсь тем, что поддерживаю игрушки написаные для СмартТВ ведущих производителей мира (на полном серьезе, всякие Тошибы с Панасониками и т.п.) Говном их код тяжело назвать, т.как он все-таки работает, и восновном работает правильно, но он весь написан в таком же стиле: никакой модульности, никаких обобщений, все примитивные операции типа поиска в массиве, заполнение массивов, добавление и т.д. написаны каждый раз по-новой для каждого конкретного случая. Не далее чем вчера попалась функция с 50+ локальных переменных.
Но самое обидное в этом то, что индустрия специально подстраивается под самого худшего программиста, чтобы и он, при необходимости мог что-то сделать с кодом. При этом время и усилия потраченные на поддержку не имеют равного значения. А худшие программисты пишут именно так: цикл вместо IndexOf.
dormendo 14.06.2013 10:04 # +2
kegdan 14.06.2013 11:01 # +1
wvxvw 14.06.2013 11:33 # 0
С MSDN все гораздо хуже - это официальная докуметация разработчика (в отличие от Вики, которая не официальная). И к ней, соответственно, предьявляются другие требования, к достоверности материалов, к тому как правильно писать код и т.п. С точки зрения нанимателя вполне резонно требовать от исполнителя соответствия официальной документации.
Более того, если уж сильно припечет, то несоответствие официальной документации можно будет показать в суде в случае исков со стороны нанимателя к исполнителю, если первому нужно будет показать несостояетельность / умышленное вредительство последнего.
neeedle 14.06.2013 12:09 # +1
Написать статейку на мсдн и редактировать ее может любой желающий, ага ага.
Это такое же сообщество как и вики, но только от конкретной организации, а вики —некоммерческое.
wvxvw 14.06.2013 13:00 # −2
neeedle 14.06.2013 13:15 # 0
MSDN содержит лишь примеры. Просто примеры кода. Просто статьи от людей.
Это не законы, которые требуется люто соблюдать.
wvxvw 14.06.2013 13:37 # +2
bormand 14.06.2013 13:47 # +3
И название чая и кофе ;)
inkanus-gray 14.06.2013 13:48 # +3
wvxvw 14.06.2013 13:49 # −3
Предположим, вы написали бухгалтерскую программу, которая начисляет зарплату в конце месяца. Предположим, вы не разобрались с датами, и начислили зарплату на месяц раньше, чем нужно. Компания использующая вашу программу идет к страховой компании и говорит: "Беда, активов совсем не осталось!". Страховая компания говорит: если это был несчастный случай: мы вам сейчас выдадим полную суму, а если это была халатность, то мы вам дадим 20% от потерь.
После чего, страховая компания начинает землю рыть, чтобы доказать, что авария была причиной халатности. И тут появляетесь вы и говорите: "А я все сделал согласно официальной документации - вот полюбуйтесь". После чего страховая компания говорит: "Иванов И. И. в следующий раз читайте документацию внимательнее". И компании компенсируют 20% от потерь. Вы получаете строгий выговор, или административное взыскание, и в следующее сокращение штата собираете пожитки в картонную коробку.
neeedle 14.06.2013 13:54 # 0
wvxvw 14.06.2013 14:00 # 0
Но если вы прочитали в Майкрософтовской документации, что 2 + 2 = 5, и написали бы программу, которая предполагает, что так работает Майкрософтовская математика - то может быть кто-то бы покрутил пальцем у виска, но взыскать с вас нечего было бы, т.как вы формально свою задачу выполнили правильно.
neeedle 14.06.2013 14:36 # +1
Плюс вы говорите о явном расхождении смысла написанного в документации и того, что есть на в самом деле. На MSDN'e такого нет. Там есть только немного не красивый код. Его можно отрефакторить, но смысла он не поменяет.
Вы просто не любите майкрософт и все, пытаясь убедить всех в том, что такой код нанесет компании убытки и повлияет на карьеру программиста. Знаете что? Слепо документацию использовать нельзя. Вот.
wvxvw 14.06.2013 15:14 # 0
Я несколько лет модерировал аналогичную систему - Adobe Community Help, раздел посвященный Флексу, и у меня есть определенное представление о том, что из себя представляет этот документ и для чего его можно использовать.
neeedle 14.06.2013 15:20 # 0
Так нельзя.
wvxvw 14.06.2013 15:58 # 0
neeedle 14.06.2013 16:26 # 0
Код который выше не плохой, он просто другой. Да можно написать проще, но такой код не ошибка. Вы говорили об ошибке в коде, о грубой ошибке. Или я вас не правильно понял? Тогда о чем вы говорили, о том как специалист понимает доки? Это проблемы специалиста, но не доков. В общем предлагаю закончить на этом, потому-что это бессмысленно.
wvxvw 14.06.2013 16:36 # 0
neeedle 14.06.2013 17:42 # 0
wvxvw 14.06.2013 18:29 # 0
Ошибки в коде нет. В коде есть говностиль. В примере программист допускает ошибку. В примере в документации ошибки нет. В примере программист наказан за лень и невнимательность потому, что страховая компания обнаружила несоответствие между документацией и программой. Если бы ошибка была в документации, то страховая компания не смогла бы обвинить программиста в ошибке.
neeedle 14.06.2013 19:25 # 0
>>Ошибки в коде нет. В коде есть говностиль.
Спасибо кеп, я же говорю, что понял это.
Во вторых не говностиль, а не очень красивый код. Этот код понятен, легко читаем, его можно быстро отрефакторить, если нужно. Этих пунктов уже достаточно что бы не называть его говнокодом, а исполнение — говностлитем.
А у вас лютовыраженный перфекционизм.
wvxvw 14.06.2013 19:57 # 0
- вменяемых сокращений в названиях дней недели.
- выход из функции в одной точке.
- отсутствие лишних элементов (таких как скобки).
- мемоизации результатов поиска.
- евристику определяющую манеру поведения кода и в зависимости от того, что происходит чаще: изменение массива, или поиск - сортировку массив, для того, чтобы воспользоваться бинраным поиском.
- возможно, использовала другую структуру данных, например, хештаблицу.
- а может быть распараллеливала поиск на несколько процессоров, в каждом по своему сегменту массива.
Что интересно, по поводу последних пунктов: не факт, что штатная функция ничего из этого не делает, а даже если не делает сейчас - то вполне может быть будет когда-нибудь в идеальном будущем. Т.о. человек поместивший в доку свой велик сделал медвежью услугу тем, кто из доки скопируют. А в конечном итоге - и себе, т.как херово, но по документации написаный код нужно будет потом поддерживать. Изза поддержки херового легаси не будет достаточно ресурсов для перехода на лучшие технологии. Врезультате в далеком, но неизбежном будущем, внуки говноизобретателя поплатятся за это снижением продаж и, впоследствии, полным отказом от технологии :)
bormand 14.06.2013 20:52 # +1
О_о. Нахуя, простите, зачем она здесь?
wvxvw 14.06.2013 20:56 # 0
anonimb84a2f6fd141 16.06.2013 02:23 # 0
Расшифруй.
bormand 16.06.2013 07:12 # +2
Чтобы был один return, согласно заветам секты одновозвратников.
anonimb84a2f6fd141 24.06.2013 18:23 # 0
bormand 14.06.2013 19:47 # 0
Так получается выгодно, чтобы вся документация была с ошибкой... Документацию же писала другая фирма, ей ничего не предъявят, а кодившему по бажной документации сплошной профит ;)
wvxvw 14.06.2013 19:58 # 0
kegdan 15.06.2013 01:21 # 0
barop 27.01.2017 05:53 # 0
bormand 14.06.2013 09:28 # +1
В данном контексте - нет. У него же там под циклом ретурн.
neeedle 14.06.2013 09:33 # 0
anonimb84a2f6fd141 16.06.2013 02:20 # 0
Для тех кому нех делать ее копировать?
guest 27.01.2017 03:11 # 0