Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
template <typename ... Args>
New (Args ... args) {
d = new Class(args...);
} int a = very_long_expression1_length1 +
very_long_expression2_length2__test_lol +
very_long_expression3_lol;
int a = very_long_expression1_length1
+ very_long_expression2_length2__test_lol
+ very_long_expression3_lol;
Derived::Derived(/* ... */)
: Base(/* ... */)
, _x(/* ... */)
, _y(/* ... */)
, _z(/* ... */)
{ /* ... */ }
//. Derived::Derived(/* ... */)
: Base(/* ... */),
_x(/* ... */),
_y(/* ... */),
_z(/* ... */)
{ /* ... */ }
ddp (иначе говоря Cut -> Paste). В случае же запятых в конце, надо следить и поправлять запятые у обмениваемых элементов. Но насколько это важно?
Эта привычка потом часто распространяется и на другие варианты применения — типа запятых перед параметрами функции, если вызов многострочный.
а распространенность стиля вообще не показатель.
не согласен, еще как показатель, ибо чаще всего писать приходится не с нуля, а на основе того что уже есть и использовать одновременно два стиля, не очень удобно.
А читать код с непривычным стилем, лишь трата времени и нервов. Хотя второго больше всего. имхо.
Отдохнуть взглядом на таком узком пространстве в одну строку??
лишь привычка, нет объективных причин для иного.
Зачем вообще запятые ставить в начало?
Как бы мелочь, но при мержах разных веток кода бывает приятно.
Если стили отличаются не сильно, то и в памяти надо держать меньше отличий. Должно быть легче…
Если прийти к универсальному стилю не суждено, то можно хотя бы частично к этому подойти
Но кто пишет такие стили? Программисты-тимлидеры. А они могут за свою жизнь попробовать много стилей, и к чему они придут в финале, то и будет очередным стандартом.
Не лучше ли использовать табуляции? ))
Не потому ли так происходит, что стандарт выбирается больше на основе привычек, а не логического анализа с изменением привычки?
Но если вставить одну табуляцию вместо 4 пробелов, и одну табуляцию вместо двух пробелов?
Ну так это рассуждения, а не доказательство.
Если информации потенциально хватает, то после обучения будут выработаны соответствующие гностические (распознающие) нейроны, и в качестве основного источника информации о коде будут использоваться уже они. Значит что признак типа «это новая функция» тоже будет видно с первого взгляда.
Привычка позволяет лишь не напрягаться при чтении менее читаемого кода, а не делаем его более читаемым.
if a < b: # без вариантов
a = c
func( b * b )
else: # без вариантов
b = c
func( a * a )
if( a < b ) { // или всё же на следующей строке?
a = c;
func( b * b );
} // или всё же на той же строке, что и else! а может вообще на предыдущей!
else { // или всё же на следующей строке?
b = c;
func( a * a );
} // или всё же на следующей строке?
более короткие комментарии начала файла, и т. п.
This file is licensed under GPL, www.gnu.org/copyleft/gpl.html
Сложные места в программе читаются в произвольном порядке (прочитав незнакомую переменную, читатель зачастую вынужден искать ее объявление, а потом возвращаться обратно)
прочитав незнакомую переменную, читатель зачастую вынужден искать ее объявление, а потом возвращаться обратно
var в C#.Нужно сильно постараться в написании такой статьи, в которой придется постоянно возвращаться к уже прочитанному.
Да, это все говорит о посредственности кода, но ведь про то и речь.
class some_class;
class some_other_class {
public:
typedef some_class some_identifier;
}
int v = some_long_expression
+ some_other_expression
+ some_last_expression;
template <typename T>
[StructLayout(System::Runtime::InteropServices::LayoutKind::Explicit, Size=sizeof(T))]
value struct native_holder
{
operator interior_ptr<T>()
{
return (interior_ptr<T>)this;
}
void init() { pin_ptr<T> ptr = *this; new (ptr) T(); }
template <typename T1> void init(T1 value) { pin_ptr<T> ptr = *this; new (ptr) T(value); }
void release() { pin_ptr<T> ptr = *this; ptr->T::~T(); }
};
Стиль кода, краткость и конкурентные преимущества