Табизмы
Как два различных полюса,
Во всём враждебны мы.
За свет и мир мы боремся,
Они — за царство тьмы.
1. табист думает, что пользуется только табами, но иногда пробелы вкрадываются, а он их не замечает (ts=3): size_t size ( void ) const { return m_size; }
bool empty ( void ) const { return m_size == 0; }
при ts=5 получаем:
size_t size ( void ) const { return m_size; }
bool empty ( void ) const { return m_size == 0; }
2. табист тоже знает, что сверхдлинные строки это плохо, но ничего не может поделать:void
calculate_some (sieve_engine &e, matrix_cache &mc, grid_pool &gp,
memory_engine &me, matrix const &adj,
matrix_list const &input, driver &d, progress &pro)
{
при смене размера таба всё уедет:
void
calculate_some (sieve_engine &e, matrix_cache &mc, grid_pool &gp,
memory_engine &me, matrix const &adj,
matrix_list const &input, driver &d, progress &pro)
{
аналогичная проблема с многострочными операторами:
if (e)
throw std::runtime_error (
lg (LVL_FATAL) << context_mark ("db_sync") << context_mark (objid)
<< " cant sync object with db, sql error: "
<< quote (e.what ()) << " (db is possibly corrupted);"
<< " time: " << timer.secs ()
<< to <std::string> ());
3. код табиста при ts=4 (очень красиво): T & operator[] ( UInt32 index ) { return *At(index); }
const T & operator[] ( UInt32 index ) const { return *At(index); }
он же при ts=3 (пока сносно):
T & operator[] ( UInt32 index ) { return *At(index); }
const T & operator[] ( UInt32 index ) const { return *At(index); }
он же при ts=6:
T & operator[] ( UInt32 index ) { return *At(index); }
const T & operator[] ( UInt32 index ) const { return *At(index); }
всё уехало, потому что таб имеет переменную длину, а слово const константную. Поэтому 2 таба не равны 1 табу и слову const.
4. код табиста невозможно преобразовать к пробелам простой заменой:в прошлом примере, если заменить табы на 4 пробела, то получится:
T & operator[] ( UInt32 index ) { return *At(index); }
const T & operator[] ( UInt32 index ) const { return *At(index); }
потому что таб иногда сжимается при отображении, последний в серии таб может занимать места как 4, 3, 2 или 1 пробел.
5. табист думает, что защищает свой образ мыслей и любимый редатор....на самом деле он защищает собственное невежество относительно любимого редактора. Любой программистский редактор умеет экспендить табы в пробелы. Если ваш не умеет, то это значит, что вы пользуетесь редактором общего назначения. Попробуйте использовать профессиональный инструментарий, это повысит эффективность работы.