Кресты / Говнокод #3282 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
class Massiv{
      int *a;
public:
       void Sozd(int k);
};

void Massiv::Sozd(int k)
{
     a=(int *) malloc (sizeof(int) * (k+3));
}

У меня будет свой конструктор!

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

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

  • Больше того - это часто бывает оправданно.
    Я так делаю частенько.
    Ответить
  • А ещё добавьте свой деструктор с блек-джеком и шлюхами.
    Ответить
  • Хм... а зачем создавать отдельную функцию? Можно ведь создать родной конструктор с 1 параметром, и не страдать потом херней типа a->Sozd(100500);
    Ответить
  • Есть такое понятие как фабрика, в данном коде конечно это и неоправданно. Но можно много вариантов придумать, когда конструктор не катит. А вообще если где-то ранее объявить объект, то могу пожелать удачи применить к нему конструктор второй раз.
    Ответить
    • А зачем к нему второй раз применять конструктор?
      Ответить
    • > Есть такое понятие как фабрика

      лишь бы умные слова сморозить, фабрика тут нахер не упёрлась. фабрика пригодна когда нужно создаавать и возвращать разные подклассы, закастенные под один надкласс. зачем оно тут?
      Ответить
  • А разве в классе без объявленного конструктора компилятор не генерит конструктор по-умолчанию (те самые 3 слова не резервирует)?
    По-моему генерит....
    Так что - реальный говно-код!!
    Ответить
  • Вот представьте себе такую гипотетическую ситуацию - во время выполнения malloc() в конструкторе вернул NULL. Тут либо надо заводить новый метод, например isValid() и дёргать его для проверки валидности объекта, либо кидать исключение, которое потом где-то надо ещё ловить, к тому же выделение памяти в конструкторе имеет некоторые неприятные побочные эффекты.

    Поэтому обычно и пишут подобный метод, а в конструкторе лишь инициализируют поля дефолтными значениями. Это надёжнее в смысле отлова будущих ошибок.
    Другое дело, что а) подобный метод обычно возвращает признак успеха или неудачи и б) освобождать память я бы предпочёл в деструкторе.

    Поэтому говнокод, но не сильно. Плюсовать не буду но и минуса не поставлю.
    Ответить
  • Я бы с удовольствием отпиздил мудня, который называет метод "Sozd" -- это просто пипец. А вот относительно инициализации не в конструкторе -- все ок, часто бывает действительно нужно, но тоже явно не в этом случае
    Ответить
      • Ни хера не понял, но если это ты меня лажаешь -- иди на хуй, а если нет -- то не иди =)
        Ответить

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

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

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


    8