1. C++ / Говнокод #5631

    +165

    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
    enum TextAlignment
    {
    	ALIGN_LEFT = 0,
    	ALIGN_RIGHT,
    	ALIGN_CENTER
    };
    
    ...
    
    if(m_textAlignment > 0 && maxLineWidth < m_desiredLength)
    {
    	float offsetx = (m_desiredLength - maxLineWidth) / m_textAlignment;
    	...
    }

    Выравниваем текст. Универсальненько.
    Что будет, если значения в энумке поменяются или добавится, к примеру, justify, никого не волнует.

    Запостил: Kirinyale, 11 Февраля 2011

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

    • Красивое говно.
      Ответить
      • Подход красивый, но надежда на неявное задание значений enum настораживает. Говно.
        Ответить
        • Вы про "ALIGN_RIGHT, ALIGN_CENTER" ? В большинстве случаев вообще нет особого смысла задавать им конкретные значения вручную.
          Ответить
          • Да, про них. Они ведь используются в качестве делителя для получения offsetx, насколько я понимаю.
            Ответить
          • Могло бы иметь, если бы там ещё было вертикальное выравнивание...
            Ответить
    • Мда. Хотя может сначала енума не было?
      Ответить
      • сначала был бит
        Ответить
        • Если верить мануалу (библии), сначала было 16 бит (слово).
          Как всегда - дока устарела...
          Ответить
          • похоже, что слово было из двух букв
            Ответить
            • и слово было задумчивое "бл"
              Ответить
            • Может оно в юникоде хранилось, так что не факт
              Ответить
              • кто ж первое слово будет в юникоде хранить. это ж ересь полнейшая.
                Ответить
                • Вначале было слово, и слово было едино, и для кодирования его достаточно было бита единого, ибо не было других слов.
                  Ответить
                  • вначале был null
                    Ответить
                    • на самом деле - да.
                      док-во:
                      свищенное слово может быть одно и только одно
                      следовательно, 1 состояние
                      кодируется log(1)/log(2) = 0 битами
                      Ответить
                  • Бит кодирует 2 слова.
                    ............Искренне Ваш КЭП.
                    Ответить
                    • >Бит кодирует 2 слова.
                      Странно, что кто-то минусует.
                      0 - одно слово, 1 - второе.
                      Ответить
        • Кто и кем был бит? Это уже не первая глава:)))
          Ответить
      • Т.е. делалось что-то типа label.setAlignment(2); ? Да уж, это многое оправдывает.
        Ответить
    • Красиво.

      Но где здесь C++?
      Ответить
      • m_
        Ответить
        • Си, конечно же, такого не разрешает :)
          Ответить
          • Разрешает. Так же, как джаваскрипт, пхп, и бейсик. Но это как бы намекает, что код находится в методе класса, чего Си уже не разрешает.

            C++ - это язык, на котором написан, как минимум, модуль программы, а не пара строчек кода.

            А может, здесь кто-то сумеет угадать и доказать, на каком языке написана следующая строка кода?

            a = b + 1;
            Ответить
            • В Стандарте есть требование, рекомендация и еще пара формулировок, среди которых "Как бы намекает" нет. Стайл-гайды не являются частью языка или требований (ебаное "m_" для меня не нужно, хоть в питоне его пиши, тем более что он в стайл-гайдах говорит заимствовать левые гайды, если кодеру привыычнее).
              Ответить
            • >a = b + 1;
              Однозначно НЕ паскаль.
              Ответить
    • - Ура! - быстро крикнула Катя и поцеловала меня в щёку.
      Ответить

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