2010-08-31 3 views
1

Допустим, у меня есть следующий кодвозвращение стиль значение вопрос

public static string GetXMLValue() 
{ 
    XDocument settingsFile = XDocument.Load("Settings.xml"); 
    return settingsFile.Element("Settings").Element("GenericValue").Value; 
} 

Он просто читает файл настройки XML и возвращает значение GenericValue. Это не может быть проще. Теперь мой вопрос заключается в том, будет ли он предоставлять любые benifit (читаемость, производительность, синтаксически, maintainablitiy и т. Д.), Чтобы сначала вернуть возвращаемое значение в строковой переменной, а затем вернуться? Или это лучше всего оставить так, как есть?

ответ

7

Чтобы быть честным, простота методов делает его доступным для чтения даже в «одной» линии:

public static string GetXMLValue() 
{ 
    return XDocument 
      .Load("Settings.xml") 
      .Element("Settings") 
      .Element("GenericValue") 
      .Value; 
} 
+0

Согласен. Для такого простого метода ничего, кроме этого, не является излишним. –

+0

Но с этим стилем не читабельность и ремонтопригодность для будущих программистов, которые наследуют эту программу, которая будет страдать? Я умею это читать, но я просто пытаюсь понять, что думают об этом другие разработчики. – Adkins

+1

Если они не могут прочитать это ясно, они не вырезаются, чтобы быть программистами. Добавление большего количества текста для настройки переменных делает его более загроможденным, это наиболее ясно и понятно. – cjk

1

С точки зрения читаемости присвоение значений переменной и ее возврат определенно помогут.

+0

Да добавьте переменную, или да оставьте ее так, как она есть? – Adkins

+0

^^ Обновлен ответ. – Dienekes

4

Есть несколько ситуаций, в которых я вижу значение в создании вспомогательной переменной:

  • Я хочу утверждать что-то о нем, как предпосылка (например, не пустая строка, минимальная/максимальная длина; и т. д.)
  • У меня возникли проблемы, и я хочу отлаживать значение более легко.

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

+0

Будет ли какой-либо удар производительности просто создавать случайные переменные просто для удобства чтения? – Adkins

+1

Ваш вопрос об отладке важен. Вы не можете увидеть значение, возвращаемое функцией в отладчике, если оно не назначено переменной. –

+0

@Adkins, беспокоясь о хите использования использования дополнительной локальной переменной в такой простой функции, будет преждевременной оптимизацией. –

2

бы это обеспечить любой benifit [...] в первую очередь возвращаемого значения в a строковая переменная, а затем возвращается? Или это лучше всего оставить так, как есть?

Функция настолько проста, что это просто не имеет значения, поэтому не теряйте сон об этом. Как только функция становится более сложной, вы всегда можете ее переосмыслить.

Если вы, например, позже должны выполнить проверку значения перед его возвратом или хотите зарегистрировать его для целей аудита, будет иметь смысл отдельная переменная. До тех пор оставьте это как есть.

Как и в стороне:

Что я нахожу гораздо более сомнителен, что вы читаете внешний ресурс (файл) в методе получения. Вызов операций, которые могут иметь побочные эффекты (например, чтение файла) в геттере, - это плохой стиль IMHO. Таким образом, каждый вызывающий элемент getter должен обрабатывать IOExceptions при чтении файла.

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

+0

Вы можете использовать теги котировок для цитирования вместо тега кода, для чего он создан (мне все еще нравится модный клетчатый текст);) – atamanroman

+0

Это не на самом деле функцию, которую я использую. Я понимаю, что вы говорите, и файл на самом деле загружен обработкой исключения в конструкторе. Я просто добавил, что здесь люди не будут спрашивать, откуда взялся этот файл. Класс просто предназначен для возврата информации из настроек XML. – Adkins

+0

@fielding: Я на самом деле не уверен, о чем вы говорите. Не могли бы вы привести пример, пожалуйста. – Adkins

Смежные вопросы