1. Java / Говнокод #17882

    +74

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    // used SQL statements
    private static final String UNIQUE = " UNIQUE ";
    private static final String INTEGER = " INTEGER ";
    private static final String TEXT = " TEXT ";
    private static final String INTEGERC = " INTEGER, ";
    private static final String TEXTC = " TEXT, ";
    private static final String PARENTHSE_LEFT = " ( ";
    private static final String PARENTHSE_RIGHT = " ) ";
    private static final String CREATE_TABLE_IF_NOT_EXISTS = "CREATE TABLE IF NOT EXISTS ";
    private static final String INTEGER_PRIMARY_KEY = " INTEGER PRIMARY KEY, ";
    private static final String DROP_TABLE_IF_EXISTS = "DROP TABLE IF EXISTS ";
    ...
    private void createLanguageTable(SQLiteDatabase db) {
        final StringBuilder sql = new StringBuilder();
        sql.append(CREATE_TABLE_IF_NOT_EXISTS);
        sql.append(LANGUAGE);
        sql.append(PARENTHSE_LEFT);
        sql.append(LANGUAGE_ID);
        sql.append(INTEGER_PRIMARY_KEY);
        sql.append(LANGUAGE_NAME);
        sql.append(TEXTC);
        sql.append(UNIQUE); // ensures uniqueness for languages
        sql.append(PARENTHSE_LEFT);
        sql.append(LANGUAGE_NAME);
        sql.append(PARENTHSE_RIGHT);
        sql.append(PARENTHSE_RIGHT);
        Log.d("CREATE_TABLE_LANGUAGE", sql.toString());
        db.execSQL(sql.toString());
    }

    Случайно найдено на просторах интернета здесь: http://cleancodedevelopment-qualityseal.blogspot.com/2014/07/how-to-import-export-or-backup-sqlite.html
    Кто подскажет, может, есть какой-нибудь сакральный смысл писать так по-индусски?

    Запостил: Actine, 30 Марта 2015

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

    • > Кто подскажет, может, есть какой-нибудь сакральный смысл писать так по-индусски?
      avoid magic strings / numbers in code, use constants
      Ответить
    • Там еще должно быть:
      2 константы boolean
      2^64 констант типа double
      2^32 констант типа float
      2^16 констант char
      2^64 констант типа long
      2^32 констант типа int
      2^16 констант short
      2^8 - byte

      Итого в том проекте Вы должны найти файл содержащий 36893488156009169154 дополнительные константы.

      Никакой магии. Только бизнес.
      Ответить
      • И все возможные строковые.
        Ответить
      • Сразу видно глаз профессионала.

        Помню, случай был. Один коллега наглым образом кастовал лонговые константы к инту и шорту, чтобы сэкономить 2^32 + 2^16 констант. Мы как увидели, сразу охренели и начальника позвали, чтоб посмотрел на говнокод. В итоге ему объяснили, что он на этом сэкономил какую-то долю процента определения констант, а весь наш код кастами сука засрал.
        В общем, пришлось пригрозить увольнением, но код мужик переписал, и теперь у нас все 36893488156009169155 констант на месте (ещё одна - для обозначения интегрального null).
        Ответить
        • А у нас было распространено подгонять размер буфера под sprintf. То есть в коде было что-то вроде char b[11]; sprintf(b, "%02xkokoko%02x", a, b); Как же хорошо, что это отмерло :)
          Ответить
          • Блин, тут же переполнение буфера, если a > 99 || b > 99.

            P.S. Вижуалкины sprintf_s вроде бы умели проверять размер вот таких вот массивов...
            Ответить
    • В 27-й строке непорядок.
      Ответить
    • как говорится, "больше кода - больше бананов" (С)
      Ответить

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