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

    +102

    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
    15. 15
    16. 16
    private static string GetRootedCurrentConfigurationFile(string configurationFile)
    {
    if (string.IsNullOrEmpty(configurationFile))
    {
    throw new ArgumentException(Resources.ExceptionStringNullOrEmpty, "configurationFile");
    }
    if (!File.Exists(configurationFile))
    {
    throw new FileNotFoundException(string.Format(CultureInfo.CurrentCulture, Resources.ExceptionConfigurationLoadFileNotFound, new object[] { configurationFile }));
    }
    if (!Path.IsPathRooted(configurationFile))
    {
    return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, configurationFile);
    }
    return configurationFile;
    }

    Собснно Говнокод by Microsoft (Ent Lib 5.0.414.0)

    Запостил: TrueLauncher, 30 Июля 2010

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

    • где здесь говнокод, %username%?
      Ответить
      • согласен, абсолютно адекватный код. разве что неотмформатированный слегка.
        Ответить
    • но что-то настораживает. Может быть, можно короче переписать?
      Ответить
    • Заминусовали не разобравшись!!! А вот присмотреться, мы передаем в метод путь к файлу обрезанный (типа folder\file) на выходе метод должен вернуть AppDomain.CurrentDomain.BaseDirectory + наш обрезанный путь. А вот это что тогда:
      if (!File.Exists(configurationFile))
      {
      throw new FileNotFoundException(string.Format(Cult ureInfo.CurrentCulture, Resources.ExceptionConfigurationLoadFile NotFound, new object[] { configurationFile }));
      }
      Правильно Гавнакод!!!! Как у нас может найтись файл по куску пути?
      И в комент даешь "минус" %username%?
      Ответить
      • Он будет искать файл в текущей директории, то есть в том самом AppDomain.CurrentDomain.BaseDirectory
        Ответить
        • не факт. текущая директория и директория сборки могут быть разными
          Ответить
          • Рефлектором посмотрите File.Exists
            Ответить
            • Посмотрел. AppDomain.CurrentDomain.BaseDirectory там нигде не увидел.
              Ответить
            • Вот вам пища для размышления:

              string file = "some file near exe.txt";
              bool exists = File.Exists(file); //true
              Directory.SetCurrentDirectory(@"C:\");
              exists = File.Exists(file); //false
              exists = File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file)); //true
              Ответить
        • не буду с Вами спорить. Проверено на практике - не работает!!! Sources were modified.

          Вот вам доказательства и ответ их сапорта:
          http://entlib.codeplex.com/Thread/View.aspx?ThreadId=221852
          Ответить
    • Вообще, в любом случае надо было проверять IsPathRooted сначала, а то так вообще не понятно, что File.Exists проверяет. Похоже на fizzbuzz. Т.е. не могли определиться, проверить ли сначала, что файл существует, или что файл существует тм, где надо.
      Ответить
    • http://entlib.codeplex.com/Thread/View.aspx?ThreadId=204281
      Ответить

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