=()= / Говнокод #3187 Ссылка на оригинал

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
sub PrintToFile {
	
	my ($filename, @file) = @_;
	
	@file = sort {$a <=> $b} @file;
	
	open BK, ">backup.txt";
	foreach $line(@file) {
		print BK "$line";
	}
	close BK;
	
	rename "backup.txt", "$filename";
	unlink "backup.txt";
	
}

А вот так мы записываем в файл. И нас не интересует многопоточность или проверка имени файла (в вызывающей функции тоже нет). А не записать ли нам ../index.html?

Прошу не кидаться калом. Первый раз вижу перл. Может быть так и надо? Волшебник-интерприатор все поправит, и не даст сучиться ужасному?

ps взято с разломанного недображелателем хостинга, для того, чтобы "поправить все как следует".

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

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

  • ну временные имена файлов - это могут быть грабли. даже без многопоточности.

    отсутствие проверок (которые в перле так легко делать) на файл операциях вот это говно.

    похоже кто-то копипастил откудато. стиль не консистентный: my $file v. $line; { $a <=> $b } редундантно в сорте.

    и если верить имени переменной (@files) то в `print BK "$line"` не хватает "\n".
    Ответить
    • { $a <=> $b } ни фига не редунантно в сорте. { $a cmp $b } редунантно в сорте.
      А за говнокод поставил плюс, т.к. операция создания временного файла меня лично раздражает. Да и foreach нафиг не нужен - достаточно было бы
      print BK sort { $a <=> $b} @file;

      @file - неподходящее название для этой переменной.
      Ответить
  • > стиль не консистентный

    > редундантно

    ВНЕЗАПНО в русском языке есть слова "последовательный" и "избыточный"
    Ответить
  • Вот оказывается как бывает. Мне не понравилость то, что делает этот код и как он это делает. А оказывается тут еще и стиль отвратителен. Энивей отценка -4 какбыл говорит, что это не говнокод. Так?
    Ответить
    • Проверки нет - плохо.
      А то что делается временный файл, так автор видимо хотел очень быстро заменить
      файл другим содержанием (строка: rename "backup.txt", "$filename";)

      Так можно было бы блокировку на файл поставить и не париться. вот это было бы правильно.
      Вообщем, попахивает новичком.
      Воздержусь от голосования.
      Ответить
    • А что до стиля.
      В 8 строке my нету, то есть $line глобальная - плохо.
      Ответить
    • Сам код выглядит нормально, если не вдумываться. За это, наверно, и минусуют.
      Ответить

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

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

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


    8