Шедевр кода

User avatar
OtherSide
Уже с Приветом
Posts: 17361
Joined: 01 Mar 2008 15:14

Re: Шедевр кода

Post by OtherSide »

Komissar wrote: 30 Dec 2017 10:02 не гони, я ничего абсолютно не тер. Следи за руками, не гоняй порожняки!
значит приглючилось
User avatar
Dmitry67
Уже с Приветом
Posts: 28283
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: Шедевр кода

Post by Dmitry67 »

Красные подчеркивания мне прислали
Они там видимо что-то обсуждали
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15477
Joined: 27 Sep 2007 22:53

Re: Шедевр кода

Post by Мальчик-Одуванчик »

А если писать для какого-нибудь микропроцессора с ограниченным набором памяти - то именно через оператор ветвления и придется корячиться. Можно так-же предположить, что переферийное оборудование выдает название города только большими буквами.
В этом случае исправленный пример выглядит вполне корректным так как предполагает что входной параметр заведомо в верхнем регистре.
Хотя сам скрин кода, показанного в студии делает сомнительным эти рассуждения для конкретного кода.
Другой вариант - это перенос очень старого кода, где ранее город задавался только большими буквами, а при переносе это требование было аннулировано. Тогда попытки исправления кода без добавления новых библиотек выглядят вполне логичными.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15477
Joined: 27 Sep 2007 22:53

Re: Шедевр кода

Post by Мальчик-Одуванчик »

Komissar wrote: 30 Dec 2017 08:44 в данном случае не использование toUpperCase() - это просто неграмотность, а не оптимизация. К тому же, простая ашипка юзера, ввод типа "МОСКВа" просто не будет обработан.
Да нифига. Из показанного куска кода вовсе не следует что город вводится пользователем. Это может быть, к примеру, радиограмма.
Поэтому можно лишь предположить что название города поступает всегда в верхнем регистре или переводится в оный сразу на этапе получения.
User avatar
Prosche
Уже с Приветом
Posts: 7956
Joined: 08 Nov 2004 12:24
Location: GA

Re: Шедевр кода

Post by Prosche »

Мальчик-Одуванчик wrote: 30 Dec 2017 18:44
Komissar wrote: 30 Dec 2017 08:44 в данном случае не использование toUpperCase() - это просто неграмотность, а не оптимизация. К тому же, простая ашипка юзера, ввод типа "МОСКВа" просто не будет обработан.
Да нифига. Из показанного куска кода вовсе не следует что город вводится пользователем. Это может быть, к примеру, радиограмма.
Поэтому можно лишь предположить что название города поступает всегда в верхнем регистре или переводится в оный сразу на этапе получения.
Не надо ничего предполагать, надо писать код, который будет работать всегда и везде.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15477
Joined: 27 Sep 2007 22:53

Re: Шедевр кода

Post by Мальчик-Одуванчик »

Prosche wrote: 30 Dec 2017 20:12
Мальчик-Одуванчик wrote: 30 Dec 2017 18:44
Komissar wrote: 30 Dec 2017 08:44 в данном случае не использование toUpperCase() - это просто неграмотность, а не оптимизация. К тому же, простая ашипка юзера, ввод типа "МОСКВа" просто не будет обработан.
Да нифига. Из показанного куска кода вовсе не следует что город вводится пользователем. Это может быть, к примеру, радиограмма.
Поэтому можно лишь предположить что название города поступает всегда в верхнем регистре или переводится в оный сразу на этапе получения.
Не надо ничего предполагать, надо писать код, который будет работать всегда и везде.
Если по условиям задачи строка поступает в верхнем регистре, то дополнительное её перекодирование снова в верхний регистр выглядит еще большей глупостью.
User avatar
Prosche
Уже с Приветом
Posts: 7956
Joined: 08 Nov 2004 12:24
Location: GA

Re: Шедевр кода

Post by Prosche »

По условиям задачи... :) Смею предположить, что вам ближе академическая деятельность.
User avatar
AndreyT
Уже с Приветом
Posts: 3009
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: Шедевр кода

Post by AndreyT »

Придирка совершенно левая. Придраться можно, но это явный "nothing to write home about". Какие-нибудь забубенные "практики" данной предметной области возможно даже веско заметят, что вместо того, чтобы завязываться на правильность конвертации uppercase-lowercase для кириллических символов, лучше просто явно рассмотреть возможные случаи по отдельности. И, вполне возможно, они даже будут правы.

Зачем писали две отдельные функции - не ясно, ибо это maintenance nightmare. Но не более того...
Best regards,
Андрей
Pantigalt
Уже с Приветом
Posts: 803
Joined: 24 Jan 2007 07:32
Location: Сергели->Новосибирск->SFBA->Новосибирск->Москва->NY->SFBA

Re: Шедевр кода

Post by Pantigalt »

AndreyT wrote: 03 Jan 2018 00:49 лучше просто явно рассмотреть возможные случаи по отдельности. И, вполне возможно, они даже будут правы.

Зачем писали две отдельные функции - не ясно, ибо это maintenance nightmare. Но не более того...
A чем именно лучше? Вы не доверяете функциям конвертации на кириллице?
То что внизу конечно не видно но можно предположить что там тоже кириллица.
Если бы хорошие кодеры предполагали ваш вариант "рассмотреть возможные случаи по отдельности" то написали бы поясняющий комментарий.
Спи быстрее, твоя подушка нужна другому. Copyright Зощенко
User avatar
Dmitry67
Уже с Приветом
Posts: 28283
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: Шедевр кода

Post by Dmitry67 »

Наиболее странно здесь что делается reverse lookup - не из id в name, а наоборот. В хорошо спроектированной системе такого не должно.быть, равно как и hardcoded list.

Однако можно с большой вероятностью предложить, зачем такое нужно: рендерят страницу, на ней оказывается название города форматированное разным образом, а id нет. А оно нужно для обращения к базе. Его и находят обратными ходом

В любом случае приговор один, расстрел.
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
AndreyT
Уже с Приветом
Posts: 3009
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: Шедевр кода

Post by AndreyT »

Dmitry67 wrote: 03 Jan 2018 17:40 Наиболее странно здесь что делается reverse lookup - не из id в name, а наоборот. В хорошо спроектированной системе такого не должно.быть,
Мимо кассы. Понятно, что lookup из id в name у них, без сомнения, есть - вы его просто не показали. А причин для реализации обратного lookup из name в id могут быть миллионы разных. Интерфейсные, например.
Dmitry67 wrote: 03 Jan 2018 17:40 равно как и hardcoded list.
Это действительно хорошее замечание. Но ведь подразумевалось не это, правда? Иначе не было бы причин постить два скриншота.
Dmitry67 wrote: 03 Jan 2018 17:40Однако можно с большой вероятностью предложить, зачем такое нужно: рендерят страницу, на ней оказывается название города форматированное разным образом, а id нет. А оно нужно для обращения к базе. Его и находят обратными ходом
С еще большей вероятностью некие данные идут из какой-то third party системы, с которой нет договоренности о согласованных стандартизованных id населенных пунктов (да и не нужно - это было бы криво), но зато есть стандартизованные текстовые названия по какому-нибудь ГОСТу (как и должно быть).
Dmitry67 wrote: 03 Jan 2018 17:40 В любом случае приговор один, расстрел.
Высосано из пальца.
Best regards,
Андрей
User avatar
Dmitry67
Уже с Приветом
Posts: 28283
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: Шедевр кода

Post by Dmitry67 »

Нет, это веб сайт. Они сами там властны делать что хотят. А сделали это
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
Pantigalt
Уже с Приветом
Posts: 803
Joined: 24 Jan 2007 07:32
Location: Сергели->Новосибирск->SFBA->Новосибирск->Москва->NY->SFBA

Re: Шедевр кода

Post by Pantigalt »

AndreyT wrote: 03 Jan 2018 20:41 Мимо кассы. Понятно, что lookup из id в name у них, без сомнения, есть - вы его просто не показали. А причин для реализации обратного lookup из name в id могут быть миллионы разных. Интерфейсные, например.
Можно предположить что угодно.
Но согласно бритве Оккама самое простое объяснение порой самое лучшее.
Если бы что то подразумевали написали бы комментарии хотя бы.
Спи быстрее, твоя подушка нужна другому. Copyright Зощенко
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Шедевр кода

Post by helg »

У Microsoft постоянно какие-то проблемы с русским. Системная функция перевода регистра у них вечно зависела от каких-то магических системных параметров типа кодовой страницы или unicode супротив зоопарка multibyte. Причём эти установки могли различаться не только между машиной разработчика и разными серверами по дороге до боевого, но даже для разных приложений/процессов внутри одной Windows.

Я хорошо понимаю разработчиков, которым проще сопровождать две частично дублирующие функции в своём коде, чем убеждать не то что неподконтрольных, часто даже неизвестных им людей следить за тем, что очередной патч существующей Windows или в пожарном порядке развёрнутая свежая Windows имеют все необходимые настройки. Причём в новой винде неожиданно могут появиться расширенные настройки для того же самого, которые придётся осваивать в пожарном проядке - а шишки посыпятся, как всегда, на разработчиков.

Нет уж. В такой зыби лучше писать понадёжнее. Пусть это и выглядит смешным на первый взгляд.
alex_127
Уже с Приветом
Posts: 7723
Joined: 29 Mar 2000 10:01
Location: Kirkland,WA

Re: Шедевр кода

Post by alex_127 »

зоопарк с collation, encoding, coordinate systems (аnd also time zones which change 10 time per year) гарантирует что пришельцы никогда не сумеют попасть в то место и время чтобы поработить землю одним щелчком.
User avatar
geek7
Уже с Приветом
Posts: 20318
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Шедевр кода

Post by geek7 »

OtherSide wrote: 29 Dec 2017 10:05
sfbaguy1 wrote: 28 Dec 2017 21:55 Концентрация идиотов в индустрии ассимптотически стремится к их концентрации в общем населении. В эпоху зеленых телевизоров
количество приличных людей среди пишущих код было значительно больше. Сейчас же столько пены. Вон ммодел - двух слов связать не
может, а все туда же - код писать.
о чем вы говорите, наоброт требования повышаются, в 80х это был фан и романтика, никакой культуры кодирования не было вообще.
Кстати в данном примере ошибка не только в том, что не использовался ToUpperCase(), там вместо кейсов можно было проинициализировать Dictionary readonly, он еще и быстрее работал бы.
Dictionary readonly это сишарповский мап? Я думаю про GetCityCodeByCityNameLower это была шьютка юмора, а Дима ожидал возмушения варварским хардкодом.
По части "требования повышаются" ... во первых это не противоречит утверждения sfbaguy1 - и требования меняются и количество людей в профессии сильно увеличилось.
я бы сказал, сильно увеличивается %% прикладного ПО в том числе очень большие и сложные проекты.
Соответственно кроме оптимальности кода становятся более важными моменты его доступности для коллег, поддержка, расширяемость итд. С другой стороны инструменты сильно развились и позволяют людям с гораздо более низкой квалификацией писать сильно более сложные вещи.
IMO это как раз большой прогресс, что даже вчерашний парихмахер с гуманитарным складом ума таки может сделать что-то полезное.
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
User avatar
geek7
Уже с Приветом
Posts: 20318
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Шедевр кода

Post by geek7 »

sfbaguy1 wrote: 30 Dec 2017 04:47 Ну да, не было культуры кодирования. До 80х был создан весь фундамент - Кнут, Вирт, структурное программирование, Ахо-Хопкрофт-Ульман, Unix.
Да и софт, который тогда создавался, был серьезней, чем сейчас. Индусская копипаста не прокатила бы. Веба не было как класса.
Программисты были суровые бородатые белые мужики. Эдакие джедаи, не то что щас - всякое чмо и быдло.
джедаи и сейчас есть, более того простора помахать световыми мечами куда поболе. опять же в фундамент Unix я не заглядывал, но некоторые кирпичики той-же жабы ещё из того гхм..на были сляпаны, подозреваю что и в nix-сах копипаста прокатывала там-сям и даже мигрировала между операционками.
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
User avatar
geek7
Уже с Приветом
Posts: 20318
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Шедевр кода

Post by geek7 »

Komissar wrote: 30 Dec 2017 08:44 в данном случае не использование toUpperCase() - это просто неграмотность, а не оптимизация. К тому же, простая ашипка юзера, ввод типа "МОСКВа" просто не будет обработан.
возможно toUpperCase() делается на стороне клиента и в серверном коде нафиг не нужна. типа по спецификации входящие данные уже должны быть в верхнем регистре и нефиг городить отсебятину, но наличие первой функции заставляет сомневатся в этой теории :D
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
XAOC
Уже с Приветом
Posts: 1650
Joined: 26 Jan 2006 20:42

Re: Шедевр кода

Post by XAOC »

geek7 wrote:
Komissar wrote: 30 Dec 2017 08:44 в данном случае не использование toUpperCase() - это просто неграмотность, а не оптимизация. К тому же, простая ашипка юзера, ввод типа "МОСКВа" просто не будет обработан.
возможно toUpperCase() делается на стороне клиента и в серверном коде нафиг не нужна. типа по спецификации входящие данные уже должны быть в верхнем регистре и нефиг городить отсебятину, но наличие первой функции заставляет сомневатся в этой теории :D
Вон из профессии за такое


Sent from my iPhone using Tapatalk
User avatar
geek7
Уже с Приветом
Posts: 20318
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Шедевр кода

Post by geek7 »

XAOC wrote: 08 Jan 2018 18:19
geek7 wrote:
Komissar wrote: 30 Dec 2017 08:44 в данном случае не использование toUpperCase() - это просто неграмотность, а не оптимизация. К тому же, простая ашипка юзера, ввод типа "МОСКВа" просто не будет обработан.
возможно toUpperCase() делается на стороне клиента и в серверном коде нафиг не нужна. типа по спецификации входящие данные уже должны быть в верхнем регистре и нефиг городить отсебятину, но наличие первой функции заставляет сомневатся в этой теории :D
Вон из профессии за такое
судя по тому, что диме прислали уже с подчёркиваниями, даже в этой конторе уже консенсус по данному вопросу... но прикольно погадать какими соображениями мог руководствоватся афтар. например идея с проблемами кодировок в винде мне показалась забавной. насчёт оптимизации скорости хеш vs ветвление - тоже прикольно.
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
User avatar
Dmitry67
Уже с Приветом
Posts: 28283
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: Шедевр кода

Post by Dmitry67 »

geek7 wrote: 08 Jan 2018 18:03
OtherSide wrote: 29 Dec 2017 10:05
sfbaguy1 wrote: 28 Dec 2017 21:55 Концентрация идиотов в индустрии ассимптотически стремится к их концентрации в общем населении. В эпоху зеленых телевизоров
количество приличных людей среди пишущих код было значительно больше. Сейчас же столько пены. Вон ммодел - двух слов связать не
может, а все туда же - код писать.
о чем вы говорите, наоброт требования повышаются, в 80х это был фан и романтика, никакой культуры кодирования не было вообще.
Кстати в данном примере ошибка не только в том, что не использовался ToUpperCase(), там вместо кейсов можно было проинициализировать Dictionary readonly, он еще и быстрее работал бы.
Dictionary readonly это сишарповский мап? Я думаю про GetCityCodeByCityNameLower это была шьютка юмора, а Дима ожидал возмушения варварским хардкодом.
По части "требования повышаются" ... во первых это не противоречит утверждения sfbaguy1 - и требования меняются и количество людей в профессии сильно увеличилось.
я бы сказал, сильно увеличивается %% прикладного ПО в том числе очень большие и сложные проекты.
Соответственно кроме оптимальности кода становятся более важными моменты его доступности для коллег, поддержка, расширяемость итд. С другой стороны инструменты сильно развились и позволяют людям с гораздо более низкой квалификацией писать сильно более сложные вещи.
IMO это как раз большой прогресс, что даже вчерашний парихмахер с гуманитарным складом ума таки может сделать что-то полезное.
Про порог вхождения я согласен. С одной стороны, я против быдлокода. С другой стороны, код, написанный иными гуру... Помните пример когда hello world пишется на несколько страниц с классами там presenter, observer, и еще чего то...

Как приятно вернуться к процедурному SQL из мира, где реальность мелко настругана на десятки мелких однострочных классов, абстрактных до такой степени что не видишь никакой связи с реальностью, всякие фабрики фабрик фабрик...
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Dmitry67
Уже с Приветом
Posts: 28283
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: Шедевр кода

Post by Dmitry67 »

Кстати, вот тут:

https://m.geektimes.ru/post/297073/

быдлопрограммеры делают каминг аут
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
OtherSide
Уже с Приветом
Posts: 17361
Joined: 01 Mar 2008 15:14

Re: Шедевр кода

Post by OtherSide »

geek7 wrote: 08 Jan 2018 18:03
IMO это как раз большой прогресс, что даже вчерашний парихмахер с гуманитарным складом ума таки может сделать что-то полезное.
Нет такого, это как раз 20 лет назад можно было прийти в индустрию с улицы, сейчас - увы
User avatar
Dmitry67
Уже с Приветом
Posts: 28283
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: Шедевр кода

Post by Dmitry67 »

OtherSide wrote: 08 Jan 2018 19:15
geek7 wrote: 08 Jan 2018 18:03
IMO это как раз большой прогресс, что даже вчерашний парихмахер с гуманитарным складом ума таки может сделать что-то полезное.
Нет такого, это как раз 20 лет назад можно было прийти в индустрию с улицы, сейчас - увы
А после выпаса коров в Индии в индустрию типа не придти?

P.S. ИНДУСтрия... Совпадение? Не думаю (С)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
geek7
Уже с Приветом
Posts: 20318
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Шедевр кода

Post by geek7 »

OtherSide wrote: 08 Jan 2018 19:15
geek7 wrote: 08 Jan 2018 18:03
IMO это как раз большой прогресс, что даже вчерашний парихмахер с гуманитарным складом ума таки может сделать что-то полезное.
Нет такого, это как раз 20 лет назад можно было прийти в индустрию с улицы, сейчас - увы
Я это переодически слышу.. а потом очередной подьём и те кто не воротят нос от маленьких по мнению "дедов" зряплат итд таки находят способы и резоны войти. уж в какую профессию с улицы войти можно то это в IT .. в дворники может и попроще, но не факт
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись

Return to “Вопросы и новости IT”