Мед центр
Пошел в медицинский центр, смотрю как врач заполняет на компе информацию обо мне, чтобы не ошибся нигде. ФИО, дата рождения, раскрывает графу пол, а там: М, Ж, О, Ц...
Пошел в медицинский центр, смотрю как врач заполняет на компе информацию обо мне, чтобы не ошибся нигде. ФИО, дата рождения, раскрывает графу пол, а там: М, Ж, О, Ц...
Я до сих пор веду одну БД, которую сам когда-то проектировал и писал к ней тонны интерфейсов. Поле «пол» у меня одно время использовалось, в частности, для автоматической генерации различных писем – мужчинам писалось в обращении «уважаемый», женщинам – соответственно, «уважаемая». Но... в список адресатов иногда требовалось включить супружеские пары, которым отправлялось одно общее письмо. Поэтому поле «пол» у меня содержало третье значение – «двое». В этом случае при занесении в базу и при генерации писем поле «имя» интерпретировалось как имя одного из супругов, поле «отчество» – как имя другого, а обращение в письме автоматически генерировалось в виде: «Уважаемые Иван Иваныч и Марья Петровна!».
Поэтому не исключаю возможности наличия для этого поля и иных значений, например, для объединения субъекта в какие-либо группы, как однополые, так и разнополые. Программисты и проектировщики БД работают от конкретно поставленных задач, а их может быть множество самых разнообразных, тем более в медицине.
П.С. К слову, отдельной моей гордостью была функция по переводу фамилий в дательный падеж для написания адресной строки «кому». Охватывала практически все возможные варианты типичных фамилий, мужских и женских: Иванов, Ленский, Бунин, Седых, Черняк, Пономаренко, Заяц и т.д.
Проектирование сложных БД это всегда компромисс между принципом эластичности – возможности безболезненных дополнений и расширений в будущем, и принципом «бритвы Оккама» – несоздаванием ненужных сущностей. Например, часто используемый перечислимый тип данных с одной стороны легко может зайти при расширении в тупик, но с другой стороны его очень часто вполне достаточно, и эти данные далеко не всегда требуют создания отдельной коррелированной таблицы. Здесь многое зависит от понимания темы и просто от интуиции разработчика. Я писал базу конкретно под себя, и моё решение на тот момент было самым простым и изящным, и время показало, что оно было верным – больше расширений в этой части не понадобилось, и ничего переделывать до сих пор не пришлось.
Встречались мне примеры, когда "и ничего переделывать до сих пор не пришлось" не потому, что все круто сделано, а потому что никто не понимает, как все это вообще работает и стараются лишний раз не трогать, чтобы ненароком совсем не сломать.
Про принцип бритвы Оккама, разумеется, согласен.
А вот с выводом про верное решение - нет. :)
Возможно, со временем вы это тоже поймёте.
Уверен, все новые сотрудники организации, для которой вы писали это приложение, улыбаются, когда им рассказывают про новый "пол" человека.
Неверный вывод.
Вы пишете БД для использования в организации. Сейчас там вы. Если через месяц вы решите уехать в другой город, вместо вас с ней будет работать другой человек.
Вывод делаете вы обо мне. И почему-то пытаетесь меня спопугайничать.
Я не делаю вывод, я делюсь опытом.
Мой взгляд - с позиции руководителя отдела, которому уже приходилось поддерживать подобные решения, когда подобный самоуверенный разработчик покидал компанию.
Вы 12 лет работаете в компании, но не факт, что будете работать 13-й, 14-й и т. п.
Да, кадры решают, но опыт показывает, что незаменимых людей нет. Нравится вам это или нет.
Теперь понятно?
И речь здесь шла вообще о другом.
Есть такая поговорка: не пизди своим ребятам.
Если в полях "Имя", "Отчество" и "Пол" хранится что-либо, кроме имени, отчества и пола соответственно (в частности, пары имя-отчество в одном поле, имя-отчество супруга, информация о замужестве и пр.), то это плохая проектировка и плохой код.
Работа "от поставленной задачи", бритвы Окамм, пространные формулировки и рассуждения об эластичности оправданиями служить не могут. Просто сделано через жопу.
Да и речь, собственно, здесь не об этом. А о том, что множественные значения для поля «пол», как оказывается, использовал не только я.
Да, это прекрасное описание того, как в коде появляются глупости, вроде пола "супружеская пара", и какие оправдания этим глупостям придумываются. Потому что разработчику показалось нецелесообразным сделать правильно, а сделать криво показалось офигенной, очень оправданной и остроумной идеей.
Поломать семантику таблицы ради двух-трех записей? Отличное решение! Потом переделаем, а пока будем постоянно держать в голове, что вот тут вот есть поле "отчество", но в нем совершенно не обязательно хранится отчество... На сарае же вон тоже написано, а там дрова.
Программист, который стремится к качеству, никогда не выберет такое решение, даже если запись одна на миллиард, дедлайн наступает через 11 секунд, а за спиной уже стоит маньяк со включенной бензопилой, угрожая порезать разработчиков на кусочки, если работа не будет завершена точно в срок.
История знает огромное количество случаев, когда нечто криво сделанное оказывалось потом офигенной, оправданной и остроумной идеей. Я не претендую сейчас на такое изобретение, но никогда не боюсь выйти за рамки системы, сделать нечто нестандартное и необычное на первый взгляд. Тем более там, где никто и ничем не рискует – это не парашют, не горная страховка и не тормозная система автомобиля, здесь не нужно проверять решения на мешке с песком или рисковать жизнью. Успокойтесь и не бздите, в реальной жизни многое придётся делать не по учебникам, и если всё работает – это годное решение. Есть люди, которым нужен порядок, и есть те, кто управляет хаосом. Есть люди, которые пишут резюме и живут от зарплаты до зарплаты, и есть те, кто даёт работу, назначает зарплату и выплачивает её. Живущий только по учебникам, работающий строго по регламенту редко становится вторым.
Речь не о гениальных задумках и мышлении за рамками, не нужно льстить себе. Речь о дурацкой идее хранить в поле "отчество" имя супруга, банально испортив тем самым таблицу. За такую идею у меню даже джуниор, которого вчера на работу взяли, получил бы по шапке, а разрабу с опытом я бы предложил отпуск взять или хотя бы пару отгулов, потому что ну явно переработал человек, если такие мысли в голову лезут.
Понимание, почему так делать не нужно, обычно приходит с опытом работы в команде и разработки крупного ПО (новичкам же предлагается в качестве аксиомы). Если понимание не пришло, качественного кода у человека не выйдет, вне зависимости от того, где он обучался. Я видел бездарных выпускников МГУ и видел прекрасных программистов-самоучек. Ваше образование не имеет значения, проблема в другом.
Вы не управляете хаосом, вы его создаете.
К счастью, программистов, которые считают что "если все работает - это годное решение" уже почти нигде не допускают до сколь бы то ни было серьезных разработок.
Хотя есть и исключения, даже довольно крупные - тот же Сбербанк, где все ПО с такой философией написано, и работает через хитро закрученную жопу. Вспоминаю, потому что регулярно тут вижу жалобы людей, как одна и та же операция в нормальных банках выполняется за пару минут, а в Сбере - за несколько часов, при ряде условий и если крупно повезет. И понимаю, почему так происходит.
Но это скорее наследие времен минувших, сейчас ситуация куда лучше и средний уровень специалистов выше.
Программист должен обладать обостренным чувством прекрасного и абсолютным стремлением к качеству. Это минимальные требования, чтобы не позорить профессию.
Волк не может нарушить традиций.
Видно, в детстве, слепые щенки,
Мы, волчата, сосали волчицу
И всосали: нельзя за флажки!
© Высоцкий
Вы так ни хрена не поняли! Повторюсь: Это МОЯ система, сделанная мной, для меня и для решения МОИХ задач. Не для организации, не для коммерции, не для заказчика – мне никто её не заказывал, я делал её сам ДЛЯ СЕБЯ ЛИЧНО, и никому передавать не собираюсь.
Ну а я из повиновения вышел,
За флажки: жажда жизни сильней,
Только сзади я с радостью слышал
Изумленные крики людей. ©
------------------------------------
Да и речь, собственно, здесь шла вообще о другом. Топикстартер удивился, что в какой-то БД какого-то медцентра поле «пол» содержит целый ряд непонятных значений. Я сделал предположение, приведя пример из своей практики. Вы же НИКАКОЙ версии по теме обсуждения не привели вообще, но позволили себе развести срач о моём личном деле и моих решениях. Ни обсуждения, ни тем более критики моих решений я не предполагал, мне это не нужно, и вы смело можете идти со своим мнением в пешее эротическое путешествие.
Мне, к сожалению, на память не приходит никакой песни про людей, лишенных чувства эстетики. Вернее, одна приходит, но она обидная и цитировать ее потому не хочу.
Вы рассказали о довольно неудачном своем решении, и я написал, что оно неудачное, потому что не хочу, чтобы кто-то, какой-нибудь начинающий, прочитал вот это вот ваше сообщение и решил, что так действительно стоит делать.
О детях, понимаете ли, забочусь. Ну и о некоторых взрослых, потому что программист, у которого не атрофировано чувство прекрасного, ему физически больно, когда он подобные решения где-то встречает. Даже в отрыве от всех практических недостатков, вот просто с точки зрения красоты и изящества это ужасно. Как знакомая мелодия с фальшивыми нотами. Передергивает, знаете ли.
Что касается детей, то вы наверное из тех учителей, кто старается побольнее ударить линейкой по рукам за неровный почерк, а в «старые добрые» времена практиковал розги и стояние на коленях в углу, на сухом горохе. То есть, если вам «физически больно», когда кто-то нарушает ваше убогое «чувство эстетики», вам не терпится поделиться с ним этой болью. Извините, у вас своя правда, у меня своя, но ваши императивы ближе к психологии мелкого клерка, ничтожества – мне они категорически не подходят.
Есть люди, которые строго соблюдают правила, и ещё более внимательно следят, чтобы эти правила соблюдали другие. Из них получаются хорошие надзиратели и милиционеры.
А есть люди, которые ПИШУТ эти правила. Они обладают обострённым чувством свободы и они умеют объяснить мотивы тех или иных ограничений, умеют понять разумные границы применимости каждого правила, умеют при необходимости отступать от этих правил, соблюдая не букву, но дух закона. Из таких людей вырастают те, кого называют Учителем с большой буквы.
Я рассказал о своём изящном, простом и удачном решении! Да, оно отступает от принятых правил, но в контексте моих задач оно было для меня УДАЧНЫМ. А вам, с вашей убогой эстетикой вертухая, лучше не делать мне замечаний, а также не заниматься с детьми и не рассуждать о педагогике, никогда!
В этом случае при занесении в базу и при генерации писем поле «имя» интерпретировалось как имя одного из супругов, поле «отчество» – как имя другогоГосподи, какой пиздец...