- 1
substr ("1111117495". ereg_replace ("[^0-9]", "", $user1->data["mobile_phone"]), -10) == substr ("1111117495". ereg_replace ("[^0-9]", "", $user2->data["mobile_phone"]), -10)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+154.8
substr ("1111117495". ereg_replace ("[^0-9]", "", $user1->data["mobile_phone"]), -10) == substr ("1111117495". ereg_replace ("[^0-9]", "", $user2->data["mobile_phone"]), -10)
Сравнение двух мобильных телефонов.
HyperGeek 24.12.2009 21:18 # 0
guest 24.12.2009 21:31 # 0
В нем. 7(495)888-88-88 будет равно 888-88-88, или же будет равно 495-888-88-88.
А единички - это от того, что поступающая информация может быть разной, в том числе и нулевой длинны.
И кстати, это проверка 2-х московских телефонов, а не сотовых. ;-)
Автору сравнения - пятерка. Атору говнопоста - незачод.
IHateBidloKod 25.12.2009 14:02 # +1
$user1->data["mobile_phone"]
Не, ну если для PHP так нормально писать, то пожалуйста... Я уже давно не пишу на нем и счастлив.
shapigor 25.12.2009 14:06 # +1
Хотя код, возможно, и решает свою задачу, но он:
1. _абсолютно_ нечитаемый
2. Использует константы, которые оказывается, состоят из 3-х частей: символа заполнителя, кода страны и кода города со всеми вытекающими последствиями.
3. Не документирован
ЗЫ: Я, если честно, пишу не на PHP, а на дотнете, но считаю, что сравнение телефонов не является даже близко той задачей, которая оправдывает использование совершенно нечитаемых конструкций в любой среде разработки.
ЗЗЫ: Хотя бы константу "1111117495" можно было вынести в одельную переменную и задокументировать ее предназначение и составляющие.
Не говоря уже о коде города и коде страны, которые вообще должны быть вынесены в конфигурацию.
Oleg_quadro 25.12.2009 14:22 # 0
shapigor 25.12.2009 14:30 # 0
Автор запостил код. Комментариев я в нем не увидел.
Кстати, практика показывает, что когда комментируешь код, то избегаешь писать такие опусы, ибо комментировать их исключительно сложно.
IHateBidloKod 25.12.2009 17:34 # +1
guest 25.12.2009 21:35 # −1
Хотя согласен, при своей красивости, он с первого взгляда может быть непонятен. Так это скорее стимул учиться. Нефиг быдлокодить.
guest 26.12.2009 20:31 # +1
А чтобы не быть голословным, приведу решение каким я его вижу.
В С# я бы создал отдельный класс PhoneNumber у которого есть метод Parse и перегружен метод сравнения. И было бы:
PhoneNumber phone1 = PhoneNumber.Parse(user1.mobilePhone);
PhoneNumber phone2 = PhoneNumber.Parse(user2.mobilePhone);
и потом
if (phone1.Equals(phone2)) {
...
}
А вот в классе PhoneNumber можешь объявлять константы, писать любую извращенную логику какую только вздумается, читать конфигурацию откуда угодно, и т.п.
Зато при таком дизайне вся логика и конвенции обработки телефонных номеров были бы в одном месте
shapigor 27.12.2009 21:40 # 0
Во-вторых, раз это решение так сложно сделать читаемым - может это решение просто неоправданно сложно?
Может не стоит изобретать гидроусилитель педалей велосипеду с квадратными колесами?
Oleg_quadro 25.12.2009 14:20 # 0
Если это два мобильных телефона они сравниваются и не важно что приплюсовывается к каждому "1111117495", не важно.
А вот если один номер допустим будет без кода города, то он будет считаться московским.
shapigor 26.12.2009 23:27 # 0
shapigor 27.12.2009 10:50 # 0
Что может быть понятнее числа -10...
Oleg_quadro 29.12.2009 01:31 # 0
Ну вынеси все эти substr выше.
mrbig66 28.12.2009 16:52 # 0