Tab vs Space при форматировании кода


5 0

Давно уже идет спор, что лучше для оформления кода - пробелы или символы табуляции. У обоих способов есть плюсы и минусы и каждый волен выбирать свой собственный. Но лично я предпочитаю Tab и объясню почему. 

В настройках редакторов можно установить значение по умолчанию для отступов во время перехода на новую строку. Допустим, что один программист использует два символа, а другой использует 4. При совместной разработке кода, форматирование превратиться в ужас если эти два человека будут писать код для одного и того же модуля. Особенно если вы пользуетесь нормальными средствами управления кодом, такими как git. Если объединить код таких двух программистов, то читать его потом будет нереально. 

Можно воспользоваться автоформатированием, которое опять же поддерживается всеми современными редакторами кода. Открываем файл, видим ужас после работы git и двух программистов, которые любят разные отступы, нажимаем магические клавиши и вуаля, все отформатировано отлично. Второй программист делает то же самое, делает commit в репозиторий кода, а там уже первый программист сохранил свое форматирование. Результат? Кто пользовался git, угадает с первого раза, чем закончится это дело. 

Я ничего плохого в пробелах не вижу, если все будут писать одинаково, но практика показывает, что это не получается. Поэтому лично я отдаю предпочтения табуляции, а там каждый настраивает свой редактор как хочет - рендерить 2 пробела вместо табуляции, или 8. 

Можете здесь поспорить, что лучше, если хотите, только цивилизованно, а для меня золотые слова: Choose tabs, choose spaces, choose whatever layout conventions make sense to you and your team. It doesn't actually matter which coding styles you pick. What does matter is that you, and everyone else on your team, sticks with those conventions and uses them consistently. 

Не всем нравится форматирование с 2 символами пробела и не всем нравится форматирование с 4-мя символами. Но при использовании табуляции, все могут настроить свой редактор кода, как они хотят и не создавать конфликтов в git. 

Любители Tab оперируют часто тем, что он занимает на диске меньше места. Ну это фигня и на этот довод я бы не обращал внимания. При нынешних размерах дисков какие-то байты пробелов погоды не сыграют. 

Я не утверждаю, что tab лучше, я всего лишь говорю, почему я выбрал их. Это такой же халивар, как Linux vs Windows или iOS vs Android и так далее. Каждый просто может выбрать то, что ему по душе, но если вы работаете в команде, вся команда должна писать код одинаково.  

То же самый халивар можно развести на тему того, как оформлять фигурные скобки. Функции можно писать так: 

void foo() {

}

или 

void foo()

{

}

Да пишите как вам удобно, просто когда работаете в команде, пишите все одинаково. Я могу писать и так и так, я адаптируюсь под то, как пишут остальные программисты, которые работают над проектом. Но для себя больше предпочитаю tab из-за его гибкости. 


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Nathaniel

20 Ноября 2012

А скобки какие предпочитаете?


Михаил Фленов

20 Ноября 2012

В скобках предпочитаю писать

void foo()
{
}

Тут нет никакой выгоды, просто привычка, но я переключаюсь очень быстро и на любой другой вариант. Когда нужно модифицировать чужой код, то открывая модуль сразу смотрю как он оформлен и оформляю свой код так же


alex.mrnv

20 Ноября 2012

Python исправляет дурные привычки лучше любых кнопок, фишек и прибамбасиков. Его код не допускает двоякого написания, в нём нет лишних конструкций, нет зависимости от множественного синтаксиса, все программисты должне придерживаться стандарта прилагающегося к документации по Python. Если учесть что любой программист должен обязательно познакомиться с этим языком, пусть даже не программируя на нём в последствии, то хорошие манеры таким образом развить в себе можно. Михаил, но ведь ни в одной книге по программированию нет неряшливого кода, а стиль отступов является деловм привычки, а не использования какого либо редактора, сам начиная изучение С++ прочитал сначала Герберта Шилдта, код всех примеров набирал самостоятельно используя листинги из книги, где видно автором было установленно 2 пробела, эта книга была для меня можно сказать вводным курсом в С++, но вот основательно стал изучать по книге Стивена Праты. Там в примерах кода 4 отступа, но к этому моменту выработалась привычка в 2 отступа, и не смотря на то что по содержанию книгу последнего считаю значительно лучше по содержанию, всё равно если можно так сказать в отношении кода, "почерк" менять не стал. Впрочем как и разночтения в написании деректив прекроцессора, здесь код Шилдта тоже выглядит на мой взгляд логичнее:


#include <iostream>
using namespace std;
int main()
{
}


чем код в листингах Праты

#include <iostream>
int main()
{
    using namespace std;
}


даже в таких простых примерах видна разница, какой стиль выбрать, наверное уже зависит от предпочтений самого программиста. И конечно если по теме, Tab рулит.
Кстати как там у вас NetBeans поживает, не разочаровал?


Михаил Фленов

20 Ноября 2012

NetBeans  пока не разочаровал


Кишкенбек

21 Ноября 2012

кстати, в нетбинсе жаба-код форматируется по египетски если чо
то есть
foo(){

}
еще на заметку
//gnu
namespace foospace
  {
    int Foo()
      {
        if (isBar)
          {
            bar();
            return 1;
          }
        else
          return 0;
      }
  }

//ANSI
namespace foospace
{
int Foo()
{
    if (isBar)
    {
        bar();
        return 1;
    }
    else
        return 0;
}
}

//java
class foospace {
    int Foo() {
        if (isBar) {
            bar();
            return 1;
        } else
            return 0;
    }
}

//linux
namespace foospace
{
int Foo()
{
        if (isBar) {
                bar();
                return 1;
        } else
                return 0;
}
}

//K&R
namespace foospace {
int Foo() {
    if (isBar) {
        bar();
        return 1;
    } else
        return 0;
}
}


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне