"PHP" / Говнокод #7814 Ссылка на оригинал

0

  1. 1
$period = in_array($bullRegionId,array_keys($periods)) ? $periods[$bullRegionId]['text'] : $periods['default']['text'];

Интересна сама проверка на существование ключа, не правда ли? :-)
Код мой. Коллега учуял, что от него несколько плохо пахнет и предложил запостить сюда))

Запостил: Nemoden Nemoden, (Updated )

Комментарии (27) RSS

  • ну не так уж чтобы и гавно, вся оптимизация сведется к следующему

    $period = isset($periods[$bullRegionId]['text'])? $periods[$bullRegionId]['text'] : $periods['default']['text'];
    Ответить
    • isset($periods[$bullRegionId]['text'])

      выдаст E_NOTICE: Undefined index, если ключа $bullRegionId не существует.

      Для проверки ключа массива есть array_key_exists, которая еще и быстрей отработает, чем isset
      array_key_exists($bullRegionId, $periods) ? 
                 $periods[$bullRegionId]['text'] : $periods['default']['text'];


      Ну а вообще, не жуткий говнокод, конечно, но хуже у нас в проекте нету. Извините.
      Ответить
      • опечатался, извиняйте. конечно же не

        isset($periods[$bullRegionId]['text'])

        а просто

        isset($periods[$bullRegionId])
        Ответить
      • >>> но хуже у нас в проекте нету. Извините.
        Наглая ложь! Найдем еще, и много! ; )
        Ответить
        • Чуть меньше миллиона строк кода... Ну да, наверное найдем еще чего-нибудь 🙂
          Ответить
      • > isset($periods[$bullRegionId]['text'])
        > выдаст E_NOTICE: Undefined index, если ключа $bullRegionId не существует.

        Ничего не путаете?
        Ответить
        • У нас ошибки всех уровней логгируются в файл. Моё мнение по этому поводу: никаких ошибок никакого уровня быть не должно.
          Это в идеале 🙂 На деле "не смертельные" ошибки у нас есть, конечно.
          Ответить
          • у меня такоеже мнение, а ошибки если и есть то логируются в базу) но в идеале, ни одного нотиса быть не должно.
            Ответить
        • Ну codepad, конечно, E_NOTICE подавляет. Я думаю, что он все подавляет, кроме E_ERROR и E_CORE_ERROR
          Ответить
  • А если так:
    $regionId = in_array($bullRegionId, array_keys($periods)) ? $bullRegionId : 'default';
    $period = $periods[$regionId]['text'];
    ?
    Ответить
    • Так можно, но сам прикол в проверке существования ключа 🙂 Намек на говнокод был именно в этом 😉
      Ответить
      • Да, я уже понял. В любом случае, повторяющиеся куски кода - плохо, поэтому оптимальным вариантом считаю следующий:
        $regionId = isset($periods[$bullRegionId]) ? $bullRegionId : 'default';
        $period = $periods[$regionId]['text'];
        Ответить
    • bull - наше сокращение от bulletin. Я когда начинал работать в компании привыкнуть сначала не мог, а теперь норм 🙂
      Ответить
  • $period = $periods[in_array($bullRegionId,array_keys($periods)) ? $bullRegionId:'default']['text'];
    Ответить
    • Ахахаха 🙂 Да! Это можно еще раз запостить на говнокод, но уже синтетика 🙁
      Ответить
  • ж.R?R,W(A"S?W:D.P)M!P)O"C X T$T(F.N P:R,E)SK$P,U,S.M.Q W(R?YY!F?WX,J?W(Z.J!P)G K.N)U.R?O?I$O:D,R$P.J!F?Y$G"Q.O(X,E?O:E?H"J"W:VQ?O!P)WY)Y)R.R$K,SC$G:P!M)Y"K)M,LM J:B"X:D)G!Y,F!Q$Y)G.A"L?K?N)H?A,M,X(Z"N!E?F:N!H$T G(Z$K"R"D)GA(E T!O:K!N)R$X:Y(T"X:I"R(A!U$F.Y!WC)S$S?C P:L?G)LY)I"I,W.RS)U(Z"V:I X"F R,A)E$L$F(C.V!E Q:VE:O)N?M(K$J!R$TD(Z(I?N:OL$Y(X(ZO:A.B"S K.E"N$P!EI O T:A,Y:V)J.N J)FM:K?T,K!F?C:U"Q,X T?X:W)D.I"R:G)P?F,Z J:Z"J)Q A$E:A,X$M.O,N Y!V(W.Y D(O(Z:KO!M)Z$Q:B,NQ E$Q:E!X,A M"D,R X!C!Y.P!O"X.U(O B"YQ$Y:K!N.M)X)J!Z(Q,D:RF V,H?K)QB$O:J!N)I,K(M"K T,K"I(D!W.P$W?A:P.Z,B(Y:A,I,U$W:X.R$P(M$D$Y!A:J N:I"B(Y.K(QT.E)Z(Q?L)OI(U(VI(O(R,C$E(E.P)V!I,GV(W"P!F$VB)FZ B,G$M"X,P"B"B Y:W?I,Q$C)WT OK?J)H Z)P)I,J?X)C"N:B)S!F?DJ!G H:V C:Z)K(S(J!U(ZPE(K T,N N(F,G,I)B$A?L"G$T(W$H"G:C:S"U K:O.J)C!L)PU?E$J:B$T)B:G"Z(C LU"U)E?N:G.O!M"Z(M"PM(V:I.R"N"M)K"T(F.I?F(DPP:L$V)L$A.I)G IA?BI)LE$Q(A,M(V)V!I"G,M(P(F:I(H V?L!H:NF$D)M(F)R P Z$RN:D I)S(Z?C,V:B)S:X!A.Y L)D(P.E:Z!Z(T:T$W(J:Z.S$E,H!U)O)G?Q!D!M U P,D.W,J K:V)C.H,UL,D(K$L)TE)F)SP"VH"K,V:YW U,P,X,Q"J"U!F,K?Q:Z(Y?T$I!E(E?I.A,D.N!E$P(A)Z$W,ZE!A:D!C(LA?P!CV"I?DE"P:K?F?A(P$G,O,G:X$I(O.Z(R!M I(P.D:R.W)H B)C.V(B:M.R,Y$Q!U(P"O$P U?H!F.A$M!T J)E,S$O)R"J,J$W.T"D)TO"W.I"EK)H)B,M(T"KG(J)N!N:N,G)I!B$BПPQFXYWZSFNWYZYYDCZCUHFRPQVUSQSQZKORCXPEKTAIDJUZUQYSJZHXGKFEGCNIDBRTYOFLLVRJMYJHCBTKDATWZGRDPKOFFPYMHSIRTKMYCYSBMUCVMLCTDYVIHSKGIXDFJMXVIUXCUTCWCDZFDITTLYFWKORMRGPOOXOFIDMAQCWFDIAGYXFMPAVZHCIOCZKHIX
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8