2012-05-22 3 views
0

Это считается лучшей практикой, чтобы иметь содержательные и понятные имена, как это возможно для параметров методы:Стоит создание переменных параметров перед вызовом метода для ясности

public myFunction(String meaningfulName1, String meaningfulName2, boolean meaningfulName3) 

Но при вызове методы иногда мы можем найти это, что снижает читаемость:

myFunction("", "foo", false); 

Стоит ли накладные расходы создавать переменные для параметров только для ясности?

String meaningfulName1 = ""; 
String meaningfulName2 = "foo"; 
String meaningfulName3 = false; 
myFunction(meaningfulName1,meaningfulName2,meaningfulName3) 

ответ

1

По моему опыту, я уверен, что явный путь лучше (по крайней мере, большую часть времени). Первый способ не принесет вам большой производительности; но было бы очень полезно для людей, которые будут продолжать работу по техническому обслуживанию.

В конце концов, Pre-optimization is the root of evils.

P/s: второй способ крайне необходим для методов с параметром LONG (кроме метода «objectize» params). Но я надеюсь, что вам не придется с этим справляться.

+0

Добавлен синтаксический сахар для java (кредит для концепции в ответе Альбина): http://www.artima.com/weblogs/viewpost.jsp?thread=118828 –

0

Если документировать функции должным образом, когда это определено, то объяснение параметров только Ctrl + щелчок прочь или даже мышь парить прочь в IDE.

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

+0

Это правда, но если это будет заново и над собственным проектом, было бы разумно сохранить клик * x раз ... не так ли? – jasalguero

2

Основываясь на вашем соглашении об именах, я предполагаю, что вы не используете C#, но в C#, а также на многих других языках вы можете использовать именованные аргументы при вызове метода.

myFunction(meaningfulName1: "", meaningfulName2: "foo", meaningfulName3: false) 

Я использую эту технику для облегчения читаемости, когда из содержания не видно, что представляют собой различные аргументы. Особенно вызовы методов с большим количеством 0, 1, true, false, null являются хорошими кандидатами, где вам нужно быть более явным в ваших именованиях аргументов, чтобы сделать код читаемым.

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

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

+0

Спасибо за хорошую информацию! Похоже, у java есть эта функция, и это первый раз, когда я услышал об этом! Благодаря! –