Возвращают значение.
, Почему?
Правильность, Удобочитаемость и Самодокументирование
Намеренный и легкий понять код лучше, чем код побочного эффекта. Рассмотрите:
float area = pi * Square(r);
по сравнению с [1 111]
Square(r);
float area = pi * r;
// ... intervening code
float x = r * 5; // did you mean to use the original r or r-squared here?
Также рассматривают преимущества краткости через composability в первом примере.
Рассмотрите сами методы, сравните:
int DoSomething(int value)
{ return value+1; }
, Который, довольно очевидно, корректен. по сравнению с [1 114]
void DoSomething(int value)
{ value++; }
то, Которое кажется правильным и скомпилирует очень хорошо, но на самом деле просто нет. То, что Вы действительно хотите, является этим:
void DoSomething(ref int value)
{ value++; }
// client code:
DoSomething(ref a);
Переменные Дешевы
, Много хорошо названных переменных предпочтительны по немногим снова использованным переменным общего назначения. Сопротивляйтесь искушению преждевременно оптимизировать, шанс, что необходимо будет сократить количество локальных переменных для улучшения производительности системы, является колоссально крошечным. Снова, Переменные являются Дешевыми, не СНОВА ИСПОЛЬЗУЮТ ПЕРЕМЕННЫЕ!
Тестируемость
Рассмотрите:
Assert.IsTrue(Square(2) == 4);
по сравнению с [1 120]
float a = 2;
Square(a);
Assert.IsTrue(a == 4);
существует много других преимуществ для предотвращения мутации в предпочтении к возвращению значения. Это не просто несчастный случай, что математика определяет функцию как отображение входных значений к выходным значениям.
Я бы предложил использовать closest
, который выбирает наиболее подходящий родительский элемент:
$('input[name="submitButton"]').closest("form");
Вместо фильтрации по имени я бы сделал следующее:
$('input[type=submit]').closest("form");
см. также jquery/js -- Как выбрать родительскую форму, на основе которой нажимается кнопка отправки?
$('form#myform1').submit(function(e){
e.preventDefault(); //Prevent the normal submission action
var form = this;
// ... Handle form submission
});