Представляю вам два новых атрибута, которые улучшат продуктивность, за счет уменьшения объема кода:
Я уверен, что почти у каждого из вас присутствует в проектах следующий код:
И в этом нет ничего страшного, но я считаю, что три конструктора в данном случае выглядят безобразно. Я бы предпочел иметь один. Но что если мы вдруг захотим изменить значение по умолчанию переменной whatever? А ведь у нас два места в коде, где она используется, которые нам придется изменить — довольно неудобное действие.
Но с новыми атрибутами, мы можем иметь только один конструктор.
Теперь код выглядит значительно лучше, согласны? Мои значения по умолчанию в одном месте, да и конструктор у меня один, а не три. Данный способ работает и с обычными методами.
И да, использовать атрибуты не обязательно, вы можете реализовать все другим, опять таки, новым способом.
- [Optional]
- [DefaultParameterValue]
Я уверен, что почти у каждого из вас присутствует в проектах следующий код:
public class Thingy
{
public Thingy()
: this("Default", -1)
{
}
public Thingy(string name)
: this(name, -1)
{
}
public Thingy(string name, int whatever)
{
_name = name;
_whatever = whatever;
}
// Other code...
private string _name;
private int _whatever;
}
* This source code was highlighted with Source Code Highlighter.
И в этом нет ничего страшного, но я считаю, что три конструктора в данном случае выглядят безобразно. Я бы предпочел иметь один. Но что если мы вдруг захотим изменить значение по умолчанию переменной whatever? А ведь у нас два места в коде, где она используется, которые нам придется изменить — довольно неудобное действие.
Но с новыми атрибутами, мы можем иметь только один конструктор.
public class Thingy
{
public Thingy([Optional, DefaultParameterValue("Default")] string name,
[Optional, DefaultParameterValue(-1)]int whatever)
{
}
}
* This source code was highlighted with Source Code Highlighter.
Теперь код выглядит значительно лучше, согласны? Мои значения по умолчанию в одном месте, да и конструктор у меня один, а не три. Данный способ работает и с обычными методами.
И да, использовать атрибуты не обязательно, вы можете реализовать все другим, опять таки, новым способом.
public class Thingy2
{
string n;
int i;
public Thingy2(string name = «Default», int whatever = -1)
{
n = name;
i = whatever;
}
}
* This source code was highlighted with Source Code Highlighter.