Russian Qt Forum

Программирование => Общий => Тема начата: red5 от Сентябрь 24, 2009, 10:18



Название: Вопрос по стилю написания кода.
Отправлено: red5 от Сентябрь 24, 2009, 10:18
Здравствуйте. Я начинающий програмист и меня интересует как грамотнее будет написать такой участок кода:

Код:
bool Dock5::isFrameDeclareVariable()
{
    if(f1->frameStyle() == QFrame::NoFrame){
return false;
    }
    else {
return true;
    }
}

Может быть, стоит написать всё в одну строку?

Код:
bool Dock5::isFrameDeclareVariable()
{
    return ( f1->frameStyle() != QFrame::NoFrame )
}

Есть уважаемые люди, которые говорят, что первый вариант "некрасивый". А в книге "Совершенный код" С.Макконнелл пишет что нужно писать код, который прежде всего понятен людям. Мне например, первый вариант гораздо понятнее.
Понимаю, что это дело вкуса, вот и интересует мнение опытных специалистов.


Название: Re: Вопрос по стилю написания кода.
Отправлено: kuzulis от Сентябрь 24, 2009, 10:49
Код:
    ...
    return (f1->frameStyle() == QFrame::NoFrame) ? false:true;
    ...

:)

или

Цитировать
Код:

bool Dock5::isFrameDeclareVariable()
{
    return ( f1->frameStyle() != QFrame::NoFrame )
}


Название: Re: Вопрос по стилю написания кода.
Отправлено: mell от Сентябрь 24, 2009, 11:17
я, например, вижу красоту кода объектно-ориентированных языков (тем более программируя на qt) именно в его понятности. Вообще, если правильно использовать ООП, комментарии к коду можно даже не писать, достаточно правильно выбирать названия методам. Если программа пишется в команде, или будет выкладываться с исходным кодом, или программа большая и в ней нужно будет потом разбираться, естественно предпочтителен "понятный" вариант.
а вот красивый вариант, по моему мнению, предпочтителен в процедурных языках в тех случаях, когда пишется "серьезный" код, например решение сложных алгоритмов, когда не просто кодишь потоком gui или там sql, а решаешь "красивую задачу красивым стилем"
Видимо тут отличие, как между стихами и прозой....

Кстати вот еще "понятный" вариант:
Код
C++ (Qt)
bool Dock5::isFrameDeclareVariable()
{
   bool isFrameDeclare = (f1->frameStyle() != QFrame::NoFrame)
   return isFrameDeclare;
}
 


Название: Re: Вопрос по стилю написания кода.
Отправлено: Rcus от Сентябрь 24, 2009, 15:25
Во, нашел. Помню что уже по этому поводу флейм :) http://www.prog.org.ru/topic_8578_0.html


Название: Re: Вопрос по стилю написания кода.
Отправлено: spirit от Сентябрь 24, 2009, 16:03
вот (http://qt.gitorious.org/qt/pages/QtCodingStyle) статейка про стиль троллей.


Название: Re: Вопрос по стилю написания кода.
Отправлено: red5 от Сентябрь 28, 2009, 09:06
Спасибо.
Вот пример из стиля троллей:
Код:
Use curly braces when the body of a conditional statement contains more than one line,
and also if a single line statement is somewhat complex.
// Wrong
if (address.isEmpty()) { 
    return false; 


for (int i = 0; i < 10; ++i) { 
    qDebug("%i", i); 


// Correct 
if (address.isEmpty()) 
    return false; 

for (int i = 0; i < 10; ++i) 
    qDebug("%i", i); 


Но ниже у них несколько исключений из этого правила :-) И эти исключения больше путают, чем помогают.
А вот в книге "Совершенный код" Макконнелл пишет, что всегда следует применять {}, даже когда всего одна строка. Это позволяет избежать ощибок-опечаток при дальнейшем добавлении второй строки. Конечно, это всё дело вкуса и споры вокруг этой темы говорят, что нет единственно правильного решения. Всем спасибо.


Название: Re: Вопрос по стилю написания кода.
Отправлено: Rcus от Сентябрь 28, 2009, 09:15
Не вижу противоречия. Все "исключения" подчиняются правилу
Цитировать
General exception

    * Feel free to break a rule if it makes your code look bad.
:)