Перейти к содержимому
Форумы SkyCentre Прыжки с парашютом
Igor

"Шедевры" программированя

Recommended Posts

Чаще всего такие "перлы" возникают от незнания каких либо функций (как, в частности, в начале тему - человек хотел проверить, является ли параметр целым числом?). Обычно отличие прекрасного программиста от хорошего - прекрасный пытается понять, что же двигало человеком и что же именно он хотел сделать, и почему именно так: незнание или все таки какие то подводные камни (ни у кого не было при большом проекте, когда много разных групп работают вместе, что приходится делать обвязку стандартной функции из-за особенностей передаваемых данных?)? Хороший начинает кричать странные звуки и переписывать все по своему.

Поделиться сообщением


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

Если архитектура проекта выбранна правильна, разве такое не должно устраняться?

Хороший начинает кричать странные звуки и переписывать все по своему

А если "прекрасный нагородил велосипедов", и последующие написание это только костыль на костыле ? Городить костыль или переписать(если позволяет эстимейт)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Alkinoy, иногда от незнания.

Но примеры типа

if x = true then

в языке где x - булево, if хочет себе булево и "=" это операция сравнения - это явно не от незнания.

и много аналогичных примеров бывает.

Часть таких примеров давал людям на собеседованиях. Интересные иногда ответы получал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чуваки, вот смотрю на вас и восхищяюсь!

Я вот, честно-честно, пытался несколько раз начать учиться программированию. Но никак, ну просто никак нехочет мой мозг заработать в этом режиме.

Крайний раз, когда возник ажиотаж вокруг часиков с высотником, - но тут все равно, хоть ты тресни!

А тут, почитал тему с начала, вроде вас понимаю, а в теме не разбираюсь :lol: :lol: :lol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Какой код? Каких компаний?

Как правило это ДЕРьМО полное...

Всмысле "код компаний".

Я дал тебе ссылку на реалько красивый код...

Японец писал...

Извини, я подписывал NDA и не могу сказать, каких именно. Крупных, очень крупных. И представь себе, там много японцев работает, а ты приводишь аргумент в виде одного человека.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alkinoy, иногда от незнания.

Но примеры типа

if x = true then

в языке где x - булево, if хочет себе булево и "=" это операция сравнения - это явно не от незнания.

и много аналогичных примеров бывает.

Часть таких примеров давал людям на собеседованиях. Интересные иногда ответы получал.

да, такое от непонимания юольше. чаще всего проблема в том, что оно ведь тоже работает, а раз работает - то и не надо туда думать.

Но суть моего сообщения была в том, что не стоит сразу на все кричать - говнокод, стоит все таки подумать - в процентах 40-60 выясняется, что причины так делать таки были...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я согласен с Твилли - в шею гнать писателей "красивого" кода, пока не подрастут. Код должен быть а - поняным, б - правильным и/или эффективным.

Касательно первого примера в этой теме - он не решает поставленную задачу. там куча багов + эффективность ниже плинтуса, поэтому нет смысла обсуждать причины побудившие писать такой код (даже не смотря на то что он прост и понятен).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Но примеры типа

if x = true then

в языке где x - булево, if хочет себе булево и "=" это операция сравнения - это явно не от незнания.

Если все таки чет подобное if(nullptr == bar) ..

то это банально стиль написания в С подобных языках для сравнений. Опечатка if(nullptr = bar) вызовет ошибку компиляции, а вот поменяв порядок переменная/константа получится нечто иное. И булевые значения могут сравниватся для большей наглядности, и чтоб под одну гребенку. Ничего общего с перлами и говнокодом не вижу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Если все таки чет подобное if(nullptr == bar) ..

то это банально стиль написания в С подобных языках для сравнений. Опечатка if(nullptr = bar) вызовет ошибку компиляции, а вот поменяв порядок переменная/константа получится нечто иное. И булевые значения могут сравниватся для большей наглядности, и чтоб под одну гребенку. Ничего общего с перлами и говнокодом не вижу.

нет, там было написано

if(true = true) then...

а достаточно было написать

if(true) then

но работоспособны оба варианта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
нет, там было написано

if(true = true) then...

а достаточно было написать

if(true) then

но работоспособны оба варианта.

В 1С версии 7.7 второй вариант не сработает там обязательно надо первый, в старших версиях исправились

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Ну, пусть челвоек не знал о такой функции. Как ее тогда реализуем? Простейший вариант: посимвольная проверка на цифры, а также знак числа и т.д. в зависимости от формата. Но реализация проверки путем замены всех цифр - это, извините, полный финиш. Если бы мне дали задание максимально извращенно реализовать такую проверку, то я бы вряд ли то такого додумался. Подобная реализация не оставляет сомнений в использовании головы исключительно для еды.

конкретно данный пример - да :) я говорил вообще, в целом о явлении "это надо все переписать", которое присутствует у 95% программистов...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Вообще такое впечатление, что грамотных архитекторов найти просто нереально.

А что, бывает менеджмент который считает, что софт нужно проектировать :) Для появления чего-то в нашем капиталистическом мире, нужно, что бы те кто оплачивают разработку были готовы платить за проектирование. Дешевле начинать писать как на душу положит, а когда кодебейз уже вырос и вносить изменения стало слишком сложно то... перепроектирование опять начинает выглядеть слишком дорогим :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Да чтож такое творится-то?! Не самый маленький проект, все лишнее убрано.

...

Хм-м... если убрать все лишнее то должно было получиться:

bool Func ()
{
    return true;
}

но такую функцию лучше переименовать в

bool True()

и она должны быть библиотечной, свежевычеслененый

true

может в любой момент понадобиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

как вариант - писали мега функцию, начали отлаживать - не работает. Потом плюнули и стали тупо ставить в кэтчах и траях резалт=тру, патаму шо отладить не смогли...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 1С версии 7.7 второй вариант не сработает там обязательно надо первый, в старших версиях исправились

там нет Истина (оно же true) и типа "булево" в явном виде (нельзя создать переменную такого типа). поэтому 7.7 тут не в тему, т.к. в нем в точности такого вообще написать нельзя.

А что, бывает менеджмент который считает, что софт нужно проектировать :)

бывает.

Я, например, один из двух архитекторов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Трай кэчи, вообще не самый лучший вариант. Я даже склонен считать, что это code smell.

А что, бывает менеджмент который считает, что софт нужно проектировать

Если рассказать, что потом убьется куча времени на рефакторинг, что тяжко будет суппортить все это, то понимает. Хотя такое было у меня один раз, в остольном "сделайте мне быстро и дешево!!!?!?!?!?!"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
<_< Если брат летал на околосветовых скоростях какой-то ограниченный отрезок времени, то все сходится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...