Jawa / Говнокод #17882 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Actine, (Updated )

Комментарии (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 вроде бы умели проверять размер вот таких вот массивов...
          Ответить

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

Семь раз отмерь — один отрежь, guest!

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


    8