LINUX.ORG.RU
ФорумTalks

Сколько программистов надо чтобы сменить пол?


1

1

Вечный памятник человеческой неспособности договориться даже о бинарном флаге.

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

1) Строка, содержащая в себе единственную букву: «M» и «F»
2) Числовой код: 1 или 2
3) Строка, содержащая в себе одну цифру: «1» или «2»
4) В обоих строковых случаев, вместо валидной строки может быть пустая ссылка (null), либо некорректное значение.

Между ними написаны конвертеры. Код конвертинга между «числами» такой:

если исходныйПол = 2, то результирующийПол = 1
если исходныйПол = 1, то результирующийПол = 2

Как видим, три человека не сошлись в мнении о правильном обозначении пола, каждый из них набрал себе много сторонников (ну или накодил говнокода как не в себя), и тут битва началась!

Еще интересный факт: поскольку про ООП все внезапно забыли, то нельзя сделать метод, спрашивающий «а в какой же кодировке у нас пол».

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

если исходныйПол это Строка("М","Ж"), то кодировка = 1
если исходныйПол это Строка("1","2"), то кодировка = 2
если исходныйПол это Число, то кодировка = 3

Приправьте это добрым слоем проверок на невалидные ссылки и строки и закапывайте!

зы: язык — Java, название либы под NDA, но вы с 99,9% с ней никогда не встретитесь.

★★★★☆

Вот что с людьми Java делает.

valich ★★★
()
Ответ на: комментарий от CARS

ну, если ты с ней таки встретишься, у тебя будут куда более важные проблемы, чем неправильный пол ;)

кстати, по совокупности преступлений, не представляю для этой системы атомарный рефакторинг, позволивший бы впилить туда новый пол, всяких трансов и орков :)

stevejobs ★★★★☆
() автор топика

А что, не сделали отдельный тип для этого в БД? Ну или даже два если надо особенные варианты :}

Deleted
()

Ваши посты неизменно доставляют. Как обзоры жизни другой вселенной.
И каждый раз я с облегчением осознаю, что на нашем глобусе все пока отлично.
Не без проблем, но нормально.

yax123 ★★★★★
()

Сколько программистов надо чтобы сменить пол?

Ни одного. Это проблема строителей.

BMX ★★☆
()

Название под NDA

Интересно оно бывает.

takino ★★★★★
()

название либы под NDA

Вот это копирастия!

buddhist ★★★★★
()
Ответ на: комментарий от stevejobs

Как обычно для таких кодов: переписать половину заново :)

Deleted
()
Ответ на: комментарий от VladimirMalyk

'M'/'F' лучше. И нагляднее без дополнительных пояснений, и места занимает столько же, и можно расширить.

Legioner ★★★★★
()

Сколько программистов надо чтобы сменить пол?

Умножив его на три получим количество веб-дизайнеров необходимых для циклевки паркета

DNA_Seq ★★☆☆☆
()

NDA для такого шлака - как раз то, что нужно.

schizoid ★★★
()

зы: язык — Java

Ну этим, собственно, все и сказано

DNA_Seq ★★☆☆☆
()

Надо принять закон о химической кастрации архитекторов проектов, если они позволяют себе такое.

abraziv_whiskey ★★★★★
()

Очевидно потому, что многие люди так и не поняли числа 0.

DonkeyHot ★★★★★
()
Ответ на: комментарий от VladimirMalyk

true/false там неосилили?

true - человек, false - женщина?

MrHouse
()
Ответ на: комментарий от VladimirMalyk

true/false там неосилили?

А если оно не определилось? Да и поставь себя на место программиста - доведется ему в коде написать что-то типа me.today.sex=true, так какая после этого работа?

redgremlin ★★★★★
()

Просто, если сделать

boolean isMale = true;
Это будет называться дискриминацией.

CYB3R ★★★★★
()

Виноват архитектор. Надо было по-другому UML-модель рисовать.

isAbleToGiveBirth = true; // может рожать isAbleToFertilize = true; // например тетка в банке спермы = настоящий мужик ArrayOfMemes mindState; // это то, кем оно себя считает

StrongDollar
()
Ответ на: комментарий от StrongDollar

У некоторых живых организмов даже на Земле - детей вынашивает отец. Или вообще всё симметрично (т.е. нельзя сказать - что есть 2 различных пола, так как понятие пола сраведливо только для диплоидных организмов с двумя ассиметричными гаметами. Какие-нибудь гомоплоидные или мультиплоидные организмы или растения или даже какие-нибудь муравьи - могут иметь кучу разных типов полов, только определённые подмножества которых - могут воспроизводить потомство (а как остальных различать?). Там всё сложнее, насколько я понимаю. Это у биологов надо консультироваться. А у инопланетян, полагаю, всё ещё сложнее, так что нет заведомо хорошей схемы для всех (т.е. по-любому будет простыня соглашений, спецификаций).

siberean
()
Ответ на: комментарий от qbe

1 - есть член,
0 - нет члена.
запутаться невозможно

А как же транссексуалы в любую из сторон? В некоторых странах, например, некоторые меньшинства пытались протолкнуть 3й пол. Т.е. может получиться, что в будущем бинарного флага будет недостаточно. Зависит от того - каковы требования исходной задачи.

siberean
()
Ответ на: комментарий от Absurd

там ноля вообще нету

обозначал

обозначает, оно живее всех живых

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от Absurd

А там женщину обозначал нолик или единичка?

почему-то вспомнилось: «Единица вздор, единица - ноль»

siberean
()
Ответ на: комментарий от qbe

запутаться невозможно

У меня для вас плохие новости.

Xellos ★★★★★
()
Ответ на: комментарий от stevejobs

stevejobs

не представляю для этой системы атомарный рефакторинг, позволивший бы впилить туда новый пол

Зачем влеплять новый пол?

dexpl ★★★★★
()
Ответ на: комментарий от siberean

У некоторых живых организмов даже на Земле - детей вынашивает отец.

и как это ломает мою концепцию? Я предложил два массива: 1) массив функций, который организм может выполнить 2) массив мемов, которые организм про себя думает

StrongDollar
()
Ответ на: комментарий от StrongDollar

и как это ломает мою концепцию? Я предложил два массива: 1) массив функций, который организм может выполнить 2) массив мемов, которые организм про себя думает

значит, я выше неправильно тебя понял - что ты предлагаешь

siberean
()
Ответ на: комментарий от siberean

А как же транссексуалы в любую из сторон?

Обычно в байте не меньше 8 бит, а в типичном int-е уже больше 30. На всё хватит.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

Обычно в байте не меньше 8 бит, а в типичном int-е уже больше 30. На всё хватит.

Во-первых, выше говорилось про флаги (1 и 0) а не байты (может программист уже использовал тот байт и для других флагов, резервируя только один бит - для полов, а этого будет однозначно мало). Во-вторых, это довольно смелое предположение - в отношении произвольных инопланетян. Вот обидятся - что «всех под одну гребёнку», и «сдуют» планету Земля своим оружием из-за вашей программы. Любые предположения программиста (на основе его жизненного опыта, а не реальных требований, что есть функция от времени) скорее всего будут неправильными в будущем, и это приведёт к дорогостоящим модификациям программы.

siberean
()
Ответ на: комментарий от StrongDollar

isAbleToSplitReplicate // умеет ли почковаться

Я же говорил, бабушка - самец.

Xenesz ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.