LINUX.ORG.RU

Как пишете списки инициализации?


0

1

Вариант 1:

MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
    , m_polygon1()
    , m_polygon2()
    , m_some_stuff("We have very very very very very long line here")
{
    // ...
}

Вариант 2:

MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent),
    m_polygon1(),
    m_polygon2(),
    m_some_stuff("We have very very very very very long line here")
{
    // ...
}

Вариант 3:

MainWidget::MainWidget(QWidget *parent):
    QWidget(parent),
    m_polygon1(),
    m_polygon2(),
    m_some_stuff("We have very very very very very long line here")
{
    // ...
}

Или как-то иначе? Просто понял, что даже в тех проектах, где принято операторы делать в новой строке, то есть

if(isSomeLongLongLongLongLongOkGuys("We have very very long line here")
   && isOtherLongLongLongHeyThere()) {
    // ...
}
так вот, даже в этих проектах пользуются вариантом 2. Как у вас в проекте принято?

★★★★★

Вариант 3 лучше.

Если строка продолжается на следующей, то это должно быть видно ещё на этой строке. То есть ты смотришь, видишь в конце запятую - и сразу ясно, что строка не закончена. То же самое и с двоеточием.

anonymous
()

Юзаю второй и не парюсь

yoghurt ★★★★★
()

3
Только ещё пробел перед двоеточием.

UVV ★★★★★
()
MainWidget::MainWidget( QWidget *parent )
:
    QWidget( parent )
,
    mPolygon1( 1, 1, 2, 2 ),
    mPolygon2( 1, 1, 2, 2 ),
    mSomeStuff( L"We have very very very very very long line here" )
{
    // ...
}
aho
()
Ответ на: комментарий от aho

когда полей много - заодно разделяю на группы и подписываю их комментарием, точно также в описании класса

aho
()
Ответ на: комментарий от anonymous

Если строка продолжается на следующей, то это должно быть видно ещё на этой строке. То есть ты смотришь, видишь в конце запятую - и сразу ясно, что строка не закончена. То же самое и с двоеточием.

А вот во многих проектах принято писать так:

if(isSomeLongLongLongLongLongOkGuys("We have very very long line here")
   && isOtherLongLongLongHeyThere()) {
    // ...
}

И так

sdfgasdf = sdgadfgsdfgsdfgdf
           + sdgsdfgfsdgfsgfdergs
           - sdgdfgsdfg;

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от UVV

После if тоже пробел!

Согласен. Стараюсь следовать http://techbase.kde.org/Policies/Kdelibs_Coding_Style

Составил себе такой astyle-my:

astyle --indent=spaces=4 --brackets=linux \
       --indent-labels --pad-oper --unpad-paren \
       --keep-one-line-statements --convert-tabs \
       --indent-preprocessor \
       --fill-empty-lines \
       --suffix=none \
       --align-pointer=name \
       --formatted \
       `find -type f -name '*.cpp'` `find -type f -name '*.cc'` `find -type f -name '*.h'` `find -type f -name '*.c'`

За пробелы тут отвечает --pad-oper --unpad-paren. Первое ставит пробелы вокруг операторов, второе убирает пробелы вокруг скобок. То есть в итоге получается (практически вне зависимости от того, какие там переносы и пробелы были в начале):

if(event->button() == Qt::RightButton) {
    centerOn(qfScene()->blocksBoundingRect().center());
    event->accept();
}
А вот как заставить её ставить пробел после keyword-ов, не знаю. Приходится мириться.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

В astyle-my у меня ещё --add-brackets, старую версию скопипастил случайно.

Obey-Kun ★★★★★
() автор топика
MainWidget::MainWidget(QWidget *parent)
  : QWidget(parent),
    m_polygon1(),
    m_polygon2(),
    m_some_stuff("We have very very very very very long line here")
{
    // ...
}
Raving_Zealot ★★
()
Ответ на: комментарий от UVV

Возникают опечатки иногда. Иногда принимаю чужой код (где может быть не полное следование стилю). Так что подобное помогает.

Obey-Kun ★★★★★
() автор топика
#define VERY_LONG_LINE "We have very very very very very very long line here"
MainWidget::MainWidget(QWidget *parent) : QWidget(parent), m_polygon1(), m_polygon2(), m_some_staff(VERY_LONG_LINE) {
  //...
}
Miguel ★★★★★
()
MainWidget::MainWidget(QWidget *parent)
	:	QWidget(parent),
		m_polygon1(),
		m_polygon2(),
		m_some_stuff("We have very very very very very long line here")
{
	// ...
}

пс. лор тупит с табами, первая стрчока почему то уехала

vvviperrr ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.