2013-04-14 2 views
2

Я писал код, который использует вызовы функций, которые действительно длинны и часто длиннее 80 символов. Обычно я бы разделить эти вызовы функций, как это:Считываемость длинных вызовов функций

LongFunctionName(first_argument, 
       another_argument, 
       finally_last_argument); 

Однако, это выглядит странно, когда я пытаюсь поставить это в, если заявление, в основном потому, что он становится не очень понятно, какое значение она по сравнению с:

if(LongFunctionName(first_argument, 
        another_argument, 
        finally_last_argument) != value_compared_to) 
{ 
    // stuff to be called 
} 

Как бы вы отформатировали это утверждение, чтобы быть более читабельным и вписываться в 80 символов?

+0

Экраны стали намного больше, чем руководство «80 символов». – StoryTeller

+0

@StoryTeller: Но мы все же должны работать в режиме с разделенным экраном очень часто, если не всегда. –

+0

@StoryTeller Я знаю, но когда я пытаюсь написать код, который может быть разделен между проектами, я стараюсь сохранить до 80 символов в строке. – Plecharts

ответ

8

Я хотел бы рассмотреть вопрос о создании вызова функции по своей линии:

const auto value = LongFunctionName(first_argument, 
           another_argument, 
           finally_last_argument); 
if (value != value_compared_to) { 
    // ... 
} 

Вы можете даже дать value переменной хороший описательное имя, которое помогает понять код.

+0

Точно. Теперь при отладке вы можете увидеть результат функции или поставить на нее контрольную точку. Функции вложенности очень плохие. –

+0

Это выглядит как лучший способ сделать это. Я думал об этом, но казалось, что он просто сделает функцию большей из-за другой переменной, которая будет выделена. Однако, когда я думаю об отладке, как сказал @SteveWellens, он, вероятно, даже пригодится. – Plecharts

+2

Область все еще должна существовать в памяти, даже если у нее не было имени. –

0

У вас есть два варианта:

1)

Признайте, что он выглядит таким образом

ИЛИ

2)

оценить возвращаемое значение вызова функции в отдельное заявление (псевдокод)

retval = LongFunctioName(first_argument, second_argument, third_argument); 
if(retval != desired_val) { ... } 
0

Не поймите нас начали на том, я бы

if 
(  LongFunctionName 
     (  first_argument 
     ,  another_argument 
     ,  finally_last_argument 
     ) != value_compared_to 
) 
{ 
     // stuff to be called 
} 
3

Сохранение возвращаемого значения в переменной является наилучшим решением имо. Но вы можете сделать что-то еще:

if (value_compared_to != LongFunctionName(first_argument, 
              another_argument, 
              finally_last_argument))