Тема: Як краще реалізувати метод з багатьма не обов'язковими параметрами

Для прикладу є метод який приймає чотири параметри, три з яких не обов'язкові.

Можна зробити дефолтне значення для кожного параметру, і в методі перевіряти чи не нульові ці параметри.
Якщо є значення в параметрі, робити заплановану дію

MyMethod(object one, object two = null, object three = null, object four = null)
{
    if(two != null)
    {
        //do some action
    }
    if(three != null)
    {
        //do some action
    }
    if(four != null)
    {
        //do some action
    }
}

Можна зробити перевантаження методів

MyMethod(object one)
{
    //do some action with "one"
}
MyMethod(object one, object two)
{
    //do some action with "one" and "two"
}
MyMethod(object one, object two, object three)
{
    //do some action with "one", "two" and "three"
}
...

Можливо є ще якісь варіанти (якщо є, напишіть, будь-ласка)

Питання: який спосіб "кращий" ?

Розумію що "кращий" це загальне поняття, потрібно читко визначити що мається на увазі під "краще". Але напевно є загальні рекомендації як в таких випадках робити, щоб код був якісним.

Подякували: leofun011

2

Re: Як краще реалізувати метод з багатьма не обов'язковими параметрами

Для цього є params.

public void Method(object required, params object[] optional) {
    if(ReferenceEquals(required, null))
        throw new ArgumentNullException();
    foreach(object o in optional) {
        if(ReferenceEquals(o, null))
            continue;
        // ToDo ...
    }
}
Подякували: Betterthanyou1

3

Re: Як краще реалізувати метод з багатьма не обов'язковими параметрами

Для початку, відступи треба робити, щоб кід читався.
Ну і дефолтні параметри придумали, щоб їх можна було не вказувати, а функція працювала б, ніби вони є. Якщо у вас функція працює виразно по-різному залежно від наявності параметрів, це точно мають бути різні функції. Можливо, перевантажена різними списками параметрів, але точно не купа гілочок в одній.

Подякували: leofun01, Betterthanyou2