1. C# / Говнокод #14278

    +129

    1. 1
    2. 2
    3. 3
    4. 4
    string fileName = Path.GetFileName(f);
    string fileExt = Path.GetExtension(f);
    string i=fileName.IndexOf(fileExt);
    if (i > -1) fileName = fileName.Remove(i, fileExt.Length);

    Получение имени файла

    Запостил: sbs, 25 Декабря 2013

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

    • Извиняюсь, я имел ввиду в 3 строке
      int i = fileName.IndexOf(fileExt);
      Ответить
    • Я так подозреваю что человек хотел

      var fileName = Path.GetFileNameWithoutExtension(f);

      У меня только один вопрос - как, блеать, можно было пропустить этот метод, если после набора GetF... он в интелисенсе на втором месте стоит?
      Ответить
      • Название метода слишком длинное, чтобы его читать.
        Ответить
        • Да, если метод назван слишком длинно, следует написать его заново.
          Ответить
          • Это что же получается, теперь SDK известных компаний надо переписывать?
            Ответить
          • GFNWE лучше?)
            Ответить
            • 1. Get/Set в названии метода не нужно, потому что можно использовать свойства с геттером/сеттером.
              2. Совмещение двух действий в одном методе не нужно.

              С учётом вышеизложенного получаем:
              var fileName = new Path(f).fileName.removeExtension();
              Ответить
              • Хм, removeExtension() - extension method? Или fileName не string?
                Ответить
              • тряхну стариной
                namespace fs = boost::filesystem;
                auto filename = fs::path(f).stem();
                Ответить
              • Тогда уж Path.removeExtension(Path.fileName(f)) дабы все в одном модуле было
                Чувствуете этот запах?
                Ответить
      • Спасибо, действительно невнимательность сильно мешает
        Ответить

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