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

    +11

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    void Aligner::set_genomic_sequences(vector< pair <string,string> > nt_genomic_seq){
    	this->nt_genomic_sequences = *(new forward_list<pair<string,string>>);
    	this->int_genomic_sequences = *(new forward_list<pair<string,string>>);
    	for(vector<pair<string,string>>::const_iterator iter = nt_genomic_seq.begin() ; iter != nt_genomic_seq.end() ; iter++){
    		nt_genomic_sequences.emplace_front((*iter).first,(*iter).second);
    		int_genomic_sequences.emplace_front((*iter).first , nt2int((*iter).second));
    	}
    }

    Типичный академический код из https://bitbucket.org/yuvalel/repgenhmm. Могу только предположить, что авторы скопипастили код из Java, а потом разыменовывали указатели, пока не скомпилировалось.

    Запостил: Yuuri, 11 Декабря 2015

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

    • *(new ...)
      — оператор утечки памяти.
      Ответить
    • demonic_sequences
      Ответить
    • Офтопик: https://pic.twitter.com/2zTMwQg83t

      Что это за оператор?
      Ответить
    • Коллеги тут оставили на полдня эту софтину что-то крупное посчитать. Каждые полчаса радовались: «О, съедено уже NN гигабайт!»
      Ответить
      • Это такой прогрессбар теперь?
        Ответить
        • Всё для удобства пользователей: прогрессбар в мониторинге ресурсов.
          Ответить
          • И даже график прогресса от времени.
            Ответить
          • Рекомендую использовать ещё и график загрузки процессора. Так можно показать продвинутым пользователям статус выполнения, а не просто текущее состояние.
            А нет, график для памяти и так показывается. Но всё равно серьёзные люди должны расширять возможности своего ПО.
            Ответить
            • С процессором сложно. Надо аккуратно задержки высчитывать... Зато чем ближе к концу - тем быстрее.
              Ответить

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