Страницы

Поиск по вопросам

вторник, 25 февраля 2020 г.

Перенос тернарного оператора и вызываемых методов

#c_sharp #code_style


Какой способ переноса для тернарного оператора является наиболее общепринятым?
a = b ?
    c :
    d;

a = b
    ? c
    : d;

Аналогичный вопрос про вызываемые методы.
someObject.
   Foo();

someObject
  .Foo()

В качестве ответа меня бы вполне устроила ссылка на code style conventions какой-нибудь
крупной компании, где фигурируют эти вопросы.    


Ответы

Ответ 1



Придерживаюсь второго варианта как в первом, так и во втором случае. Врядли здесь можно найти "общепринятый" способ переноса. Каждый это решает сам, или придерживается правил, принятых в команде.

Ответ 2



1) Второе. 2) Второе.

Ответ 3



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

Ответ 4



Если уж приходится переносить, то первый вариант это a? b: c; или (ну, совсем не влезает) a? b: c; Вообще, если выражение столь громоздко, что в две строки не помещается, то стоит подумать о функции. Второй однозначно obj .m();

Комментариев нет:

Отправить комментарий