green_fr: (Default)
[personal profile] green_fr
Похихикав над очередным примером искусства программирования, я вспомнил свой первый рабочий день.

На работу брали по результатам собеседования по MS Access. За пару дней до собеседования мне вручили книгу, из которой я узнал не только, как пишется слово Access, но и такие полезные слова, как таблица, запрос, отчёт и многое другое.
Помню, полдня я провисел над SQL — вроде как и язык программирования, но я в упор не мог понять, как в нём объявляются переменные, как писать циклы и декларировать процедуры.
Собеседование я тем не менее прошёл.

Первым заданием мне было написать просмотрщик каталога продаваемых нашей фирмой моделей. Модели были сгруппированы по категориям, которые были разбиты по группам.
Как потом выяснилось, начальник (в данном контексте надо бы написать «Начальника!») представлял себе что-то типа выпадающего списка групп, после выбора группы появляется список категорий, далее список моделей, потом — характеристики модели.
Логику я понял, но к тому времени я ещё не знал о существовании выпадающих списков. Я вообще до тех пор только консольные программы писал, в лучшем случае с псевдографикой.
Поэтому я быстро сбацал программку, которая читала список групп и отрисовывала кнопки с их названиями (рассчитывая размер кнопок так, чтобы они все поместились на экране). Нажав на кнопку, вы запускали скрипт, который стирал все кнопки с группами и рисовал кнопки с категориями.

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

Date: 2009-11-12 04:22 pm (UTC)
From: [identity profile] birdwatcher.livejournal.com
по законам жанра у тебя должно было получиться быстрее и отъедать меньше памяти, чем решение из главы интерфейс

Date: 2009-11-13 07:36 am (UTC)
From: [identity profile] green-fr.livejournal.com
Как минимум, выпадающим списком проще пользоваться. Особенно, когда групп столько, что кнопки становятся 1*1 пиксель :-)

Date: 2009-11-12 04:24 pm (UTC)
(deleted comment)

Date: 2009-11-13 07:39 am (UTC)
From: [identity profile] green-fr.livejournal.com
Мне смешон низкий процент читаемых символов, и то, что я не способен с первого взгляда понять смысл. Я не говорю, что его там нет, или что никто не понимает. Если писать для себя (в надежде, что ты никогда не меняешься), почему бы и нет. А если допускать мысль, что твой код придётся читать кому-нибудь, иногда надо жертвовать идеей и красотой. Впрочем (см. первую претензию), я там и красоты не вижу, это я так, в предположении,ч то для кого-то она там есть.
(deleted comment)

Date: 2009-11-13 08:01 am (UTC)
From: [identity profile] green-fr.livejournal.com
Ну вот возьмём классический пример копирования массива:

Он несомненно работает, и я помню тот восторг, который я испытал, увидев его у Страуструпа.
Но если я встречу этот или подобный фрагмент в настоящем проекте, то я выругаюсь на автора и заменю его на что-нибудь вроде:

Потому что в подавляющем большинстве задач (в моей практике пока что 100%, но я допускаю) наплевать на то, что второй код работает на пару миллисекунд дольше первого. Зато, если нужно что-то поменять (ошибка, передумал и т.п.), то на модификации первого варианта программист потеряет час — а вот это, по моему опять же опыту, гораздо критичнее.

Это я в общем, а к тому конкретному коду — не знаю, лично мне не нравится использование в коде этих 1, 2, 3, 4. Я начинаю писать цикл, как только появляется второй элемент итерации. Опять же, плевать на скорость, я лучше лишний раз подчеркну, что операция одна и та же, что единственное изменение — это индекс. Вот такие мелочи, как мне кажется, и делают программу живой.
(deleted comment)

Date: 2009-11-13 08:52 am (UTC)
From: [identity profile] alexnavfr.livejournal.com
Надо же, а я не помню этот шикарный пример у Стауструпа!
Ну а макрос хорош нечего сказать, но проблема его в том что
1,как сказал Саша выше код не сопроваждаем, сейчас уже не учат С++ и уж тем более Си. молодняк что приходит не в состоянии читать и понимать простейший код, им подавай СиШарп ну или на крайний случай Жаву
2, да это красиво но не читаемо сразу влёт.
3. это нельзя дебагить :)

Date: 2009-11-13 09:21 am (UTC)
From: [identity profile] green-fr.livejournal.com
2. Некрасиво. Отступов нет :-Р

Date: 2009-11-17 08:21 am (UTC)
From: [identity profile] alekro.livejournal.com
епрст, скока нервов я ужо потратил на объяснения нехторым местным умельцам, что писать надо сопровождабельный код %)..

Date: 2009-11-13 09:50 am (UTC)
From: [identity profile] borasco.livejournal.com
подписалсо на комменты.
Зеленый, я никогда не устану восхищённо взирать на то, что порой генерит твой моск :)

Date: 2009-11-17 08:17 am (UTC)
From: [identity profile] alekro.livejournal.com
о, а я кажись помню этот факт с мсаксессем )))
лизард?

Date: 2009-11-17 08:28 am (UTC)
From: [identity profile] green-fr.livejournal.com
Ну а где ж :-) Согласись, редкий программер интерфейсов додумается до такого извращения решения!

Date: 2009-11-17 09:09 am (UTC)
From: [identity profile] alekro.livejournal.com
агась, надо иметь творческое мышление )))
вот у нас тут принцип, исходящий сверху: главное шоб заработало и в срок..а потом как идиот сидишь и трахаешься с этими произведениями бистро-бистро творчества %~~

Profile

green_fr: (Default)
green_fr

January 2026

S M T W T F S
    123
4 5678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 5th, 2026 12:49 pm
Powered by Dreamwidth Studios