1.1, _KUL (ok), 12:35, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]
| –10 +/– |
10 человек, которые пишут код, могут форматировать код 10 вариантами, и ни один из вариантов не может являтся тождественно истинным.
| |
|
2.2, ананим.orig (?), 12:49, 23/01/2015 [^] [^^] [^^^] [ответить]
| +14 +/– |
Да никому и не нужен "истинный" код (это программирование, а не код давинчи).
Нужен единообразный.
| |
|
3.64, _KUL (ok), 02:51, 24/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
Че к чему заминусовали. Если человек пишет всю жизнь
test() {
}
То почему его могут заставлять писать
test()
{
}
По мне так, форматирование, это как почерк, имеет право отличаться.
| |
|
4.65, red (??), 05:37, 24/01/2015 [^] [^^] [^^^] [ответить]
| +10 +/– |
если пишешь для себя, то можешь писать хоть
test (
) {
}
а если в проекте даже всего несколько человек, то будь добр, соблюдай принятые соглашения о форматировании. Иначе код превратится в невразумимое нечто.
| |
|
5.73, Аноним (-), 20:56, 24/01/2015 [^] [^^] [^^^] [ответить]
| –1 +/– |
Уважаемые энтерпрайз проектанты, откройте для себя uncrustify, artictic style и им подобных и не мучайте народ :)
| |
|
4.69, o (?), 09:19, 24/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
Профессионал должен моч писать любым почерком. Каким надо таким и писать без проблем и притензий
| |
4.77, Аноним (-), 08:53, 25/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
не имеет. В нормальных языках прописано как надо форматировать код.
Если ты пишешь только для себя то да, все равно. А если несколько человек пишут то получится мешанина из разных способов форматирования.
| |
4.78, й (?), 17:11, 25/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
> По мне так, форматирование, это как почерк, имеет право отличаться.
ага, в большом проекте с кучей людей. и отступы пусть каждый использует, какие привык -- кто таб, кто четыре пробела, кто два, кто пять. а функции myTest1, my_test2 и MyTest3 в одном файле не хотите? да так, чтобы одна из них бросала exception, вторая возвращала return code, третья -- писала в глобальную переменную? индивидуальность программиста же.
увидите как-нибудь такое на практике -- поймёте, зачем создали style guide для проектов.
| |
4.79, Softfire (?), 01:12, 26/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
> По мне так, форматирование, это как почерк, имеет право отличаться.
Представления не имею, как выглядят почерки моих коллег на работе.
Уже давно предлагать кому бы то ни было рукописный текст - моветон.
Разбираться в чужом почерке также неприятно, как и в нестандартно отформатированном коде.
| |
|
3.68, angra (ok), 08:33, 24/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
Не просто единообразный, а именно того вида, что принят в данной команде/сообществе. При этом в другой команде может быть принято совсем другое оформление. Инструмент форматирования должен такое учитывать и позволять гибкие настройки. Пример хорошего форматировщика - perltidy. В пример плохого надо ткнуть пальцем или и так понятно?
| |
|
4.72, ананим.orig (?), 17:49, 24/01/2015 [^] [^^] [^^^] [ответить]
| +1 +/– |
> При этом в другой команде может быть принято совсем другое оформление.
> ...
> Пример хорошего форматировщика - perltidy. В пример плохого надо ткнуть пальцем или и так понятно?
Может пример про трусы не придётся приводить, а?
Есть сабж. В этой команде принято так. И другого нет.
Хочешь — пользуйся. Не хочешь — не пользуйся.
Никто соцобязательств по предоставлению вашего форматирования для вашей же команды (которой вообще нет) на себя не брал.
| |
|
|
|
|
2.6, Аноним (-), 13:03, 23/01/2015 [^] [^^] [^^^] [ответить]
| –8 +/– |
Ну по крайней мере пример из статьи сформатирован единственным верным способом. Если других косяков не будет, это и настраивать не нужно. Интересно как оно многострочные инициализаторы в конструкторах форматирует.
| |
2.23, Аноним (-), 14:33, 23/01/2015 [^] [^^] [^^^] [ответить]
| –5 +/– |
> судя по докам настраивается это чуть меньше чем никак
в этом суть: они хотят одинаковости.
видимо, анализаторы кода делают, ии варганят, etc. ии не умеет разнотипный код читать.
| |
|
3.26, Аноним (-), 14:41, 23/01/2015 [^] [^^] [^^^] [ответить]
| +1 +/– |
идиот, анализ кода всегда работает с AST или прочими деревьями.
| |
3.48, Аноним (-), 17:04, 23/01/2015 [^] [^^] [^^^] [ответить]
| +2 +/– |
>ии не умеет разнотипный код читать.
Если тот ии делаете ты - то не удивительно.
А разработчики компилеров сделали который умеет ... что то около 60 лет назад 8-)
| |
|
|
|
2.7, Аноним (-), 13:04, 23/01/2015 [^] [^^] [^^^] [ответить]
| –13 +/– |
>>int* x
> почему не int *x?
Потому что * это часть описания типа. Только не надо про int* x, y; - так делают только имбецилы.
| |
|
3.11, Аноним (-), 13:42, 23/01/2015 [^] [^^] [^^^] [ответить]
| +14 +/– |
>Потому что * это часть описания типа.
Эта ошибка понимания сути указателей в СИ. Указатель - не новый тип. Данную строку необходимо писать int *x и читать ИКС есть УКАЗАТЕЛЬ на переменную ТИПА int.
| |
|
4.13, Аноним (-), 13:45, 23/01/2015 [^] [^^] [^^^] [ответить]
| –9 +/– |
> Эта ошибка понимания сути указателей в СИ. Указатель - не новый тип.
> Данную строку необходимо писать int *x и читать ИКС есть УКАЗАТЕЛЬ
> на переменную ТИПА int.
А void* - указатель на переменную типа void? Не выдумывайте. Переменная - это значение в памяти, у значения есть тип. Этот тип - int*.
| |
|
5.14, Аноним (-), 13:49, 23/01/2015 [^] [^^] [^^^] [ответить]
| +6 +/– |
>А void* - указатель на переменную типа void
Именно так, аналогично как функция void fun() возвращает значение void.
>Переменная - это значение в памяти, у значения есть тип.
Перменная это понятие языка программирования и к памяти не имеет никакого отношения.
>Этот тип - int*.
Вас не беспокоит тот факт, что все указатели занимают в памяти 4 байта (8 на 64 битных системах)?
| |
|
6.16, Аноним (-), 13:59, 23/01/2015 [^] [^^] [^^^] [ответить]
| –3 +/– |
> Именно так, аналогично как функция void fun() возвращает значение void
Значение можно присвоить переменной. Присвой, потом поговорим.
> Перменная это понятие языка программирования и к памяти не имеет никакого отношения.
О, даже так. Запущенный случай.
>>Этот тип - int*.
> Вас не беспокоит тот факт, что все указатели занимают в памяти 4
> байта (8 на 64 битных системах)?
Не беспокоит, а вас? Хотите рассказать о том что делаете выводы о типе и семантике по размеру значения?
| |
|
7.24, Аноним (-), 14:36, 23/01/2015 [^] [^^] [^^^] [ответить]
| +5 +/– |
почитайте кернигана и ричи, не напрягайте себе нервный узел лишний раз.
| |
7.29, Аноним (-), 14:48, 23/01/2015 [^] [^^] [^^^] [ответить]
| +2 +/– |
>Значение можно присвоить переменной. Присвой, потом поговорим.
Переменная может быть определена без данных, см http://en.wikipedia.org/wiki/C_syntax#Incomplete_types
>О, даже так. Запущенный случай.
Запущенный случай это невозможность построить в голове такие абстракции как переменные языков программирования. Сколько памяти займёт в JS переменная x, объявленная как var x = 5?
>Не беспокоит, а вас? Хотите рассказать о том что делаете выводы о типе и семантике по размеру значения?
Размер значения и семантика совпадает, поскольку указатели не имеют никакого отношения к типам данных
| |
|
8.37, Аноним (-), 15:40, 23/01/2015 [^] [^^] [^^^] [ответить] | –4 +/– | И При чём здесь JS Если бы указатели не имели отношения к типам данных, их мож... текст свёрнут, показать | |
|
9.67, angra (ok), 08:28, 24/01/2015 [^] [^^] [^^^] [ответить] | +/– | При том, что ты не понимаешь, что такое абстракция вообще и переменные языков п... текст свёрнут, показать | |
|
|
|
6.60, Умный (?), 20:55, 23/01/2015 [^] [^^] [^^^] [ответить]
| –3 +/– |
>>А void* - указатель на переменную типа void
> Именно так, аналогично как функция void fun() возвращает значение void.
>>Переменная - это значение в памяти, у значения есть тип.
> Перменная это понятие языка программирования и к памяти не имеет никакого отношения.
>>Этот тип - int*.
> Вас не беспокоит тот факт, что все указатели занимают в памяти 4
> байта (8 на 64 битных системах)?
А вас не беспокоит, что вы нихера не знаете, но берете смелость утверждать. Указатель вполне может быть больше 8ми байт, смотря на что он указывает.
| |
|
|
6.17, Аноним (-), 14:00, 23/01/2015 [^] [^^] [^^^] [ответить]
| –3 +/– |
> Он прав. Но int* x; мне всеравно нравится больше.
Он не прав. А нравится вам потому что хоть вы и не знаете основ языка, вам не чужда логика, а в соответствии с ней язык и разработан.
| |
|
7.30, Аноним (-), 14:51, 23/01/2015 [^] [^^] [^^^] [ответить]
| +2 +/– |
>> Он прав. Но int* x; мне всеравно нравится больше.
> Он не прав. А нравится вам потому что хоть вы и не
> знаете основ языка, вам не чужда логика, а в соответствии с
> ней язык и разработан.
Логику разрабатывали бородатые дяди Керниган, Ричи и Томпсон, два первые написали для вас книжку, которую вы не потрудились почитать, при этом учите всех программировать на си!
| |
|
8.44, Аноним (-), 15:47, 23/01/2015 [^] [^^] [^^^] [ответить] | –3 +/– | Это вы её не читали, потому что на конкретное место не укажете А я-то как раз ч... текст свёрнут, показать | |
|
7.40, cr (??), 15:43, 23/01/2015 [^] [^^] [^^^] [ответить]
| +2 +/– |
> вам не чужда логика, а в соответствии с ней язык и разработан
А вы не применяйте логику java к C, все и встанет на свои места.
| |
|
6.20, тоже Аноним (ok), 14:13, 23/01/2015 [^] [^^] [^^^] [ответить]
| +2 +/– |
С чего, собственно, он прав?
На уровне машинного кода один указатель от другого ничем не отличается.
Поэтому, собственно, С и позволяет менять ему тип.
Тип переменной, на которую он указывает - это просто информация для компилятора, какого размера область памяти должна лежать в этом месте и к какому типу ее приводить при разыменовании указателя.
| |
|
7.41, Аноним (-), 15:44, 23/01/2015 [^] [^^] [^^^] [ответить]
| –2 +/– |
> С чего, собственно, он прав?
> На уровне машинного кода один указатель от другого ничем не отличается.
Вы мимо, потому что на уровне машинного кода указатель не отличается также от long и вообще чего угодно что влезает в регистр. В машинном коде вообще нет типов.
| |
|
|
|
|
11.66, Vkni (ok), 08:12, 24/01/2015 [^] [^^] [^^^] [ответить] | +/– | Ну представьте себе, дорогой Тоже, машинный код, описываемый псевдокодом double ... текст свёрнут, показать | |
|
|
|
|
|
|
5.62, freehck (ok), 00:14, 24/01/2015 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Переменная - это значение в памяти, у значения есть тип.
Интересно, что Вы запоёте, когда столкнётесь с компилируемыми динамически типизированными языками программирования.
К слову, чем поддерживать порочный круг взаимных обвинений в безграмотности, я взялся бы утверждать, что переменная - это сущность, способная менять значение. Этой сущности может быть поставлен в соответствие символ. Символы можно сравнивать между собой в строгом и нестрогом смысле.
(предлагаю желающим продолжить эстафету и изложить здесь элементы структуры и интерпретации компьютерных программ)
:)
| |
|
4.18, Аноним (-), 14:08, 23/01/2015 [^] [^^] [^^^] [ответить]
| –1 +/– |
>>Потому что * это часть описания типа.
> Указатель - не новый тип.
Что ещё придумаешь?
6.2.5.20, Pointer type
| |
4.53, 888 (?), 17:47, 23/01/2015 [^] [^^] [^^^] [ответить]
| –1 +/– |
>необходимо писать int *x и читать ИКС есть УКАЗАТЕЛЬ
Чепуху написали. икс это имя указателя, а указатель с именем x на переменную типа int как раз и будет int* x. Если не понимаете, подставьте вместо икса собственное имя и подумайте.
| |
|
5.55, Аноним (-), 18:08, 23/01/2015 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Чепуху написали. икс это имя указателя, а указатель с именем x на
> переменную типа int как раз и будет int* x. Если не
> понимаете, подставьте вместо икса собственное имя и подумайте.
Всё верно, только int *x
| |
|
6.75, 888 (?), 23:37, 24/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
Вот поэтому вы в гугле и не работаете. xD Правда, я тоже.
Но мне хоть не придётся для использования этого плагина переучиваться.
| |
|
|
|
3.28, cr (??), 14:46, 23/01/2015 [^] [^^] [^^^] [ответить]
| +4 +/– |
> Потому что * это часть описания типа
Курите ISO/IEC 9899, пункт A 2.2. Там указано, часть чего это.
> Только не надо про int* x, y
Надо-надо. Была бы * частью описания типа - семантика такого объявления была бы другой.
| |
|
4.38, Аноним (-), 15:41, 23/01/2015 [^] [^^] [^^^] [ответить]
| –1 +/– |
>> Потому что * это часть описания типа
> Курите ISO/IEC 9899, пункт A 2.2. Там указано, часть чего это.
>> Только не надо про int* x, y
> Надо-надо. Была бы * частью описания типа - семантика такого объявления была
> бы другой.
Грамматика языка к системе типов не относится ну совершенно никак.
| |
|
5.42, cr (??), 15:45, 23/01/2015 [^] [^^] [^^^] [ответить]
| +1 +/– |
А кто говорит про систему типов? В треде обсуждается грамматика, а именно синтаксис объявлений.
| |
5.76, Аноним (-), 08:26, 25/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
>Грамматика языка к системе типов не относится ну совершенно никак.
Самое смешное сообщение на опеннете за последнюю неделю.
| |
|
|
|
2.25, Аноним (-), 14:37, 23/01/2015 [^] [^^] [^^^] [ответить]
| +3 +/– |
> >int* x
> почему не int *x?
скорее всего потому, что так пишет Поттеринг.
| |
|
|
4.50, тоже Аноним (ok), 17:11, 23/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
Компилятору-то действительно пофиг, а вот программисты обычно не любят читать что-нибудь вроде:
for(--c;n<c;*L-c?L[*a[++*L]+=32]=1:swap(a[1],a[*((*a=strchr(a[n],0)-1)+L[**a]-1)-*a[++n]?rand()%c+(n=1):1]));
| |
|
3.56, Аноним (-), 18:17, 23/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
> http://www.stroustrup.com/bs_faq2.html#whitespace
A ''typical C programmer'' writes ''int *p;'' and explains it ''*p is what is the int'' emphasizing syntax, and may point to the C (and C++) declaration grammar to argue for the correctness of the style. Indeed, the * binds to the name p in the grammar.
Ну не верно же!
| |
|
2.74, Аноним (-), 22:32, 24/01/2015 [^] [^^] [^^^] [ответить] | –1 +/– | The choice between int p and int p is not about right and wrong, but abo... большой текст свёрнут, показать | |
|
|
2.9, Аноним (-), 13:26, 23/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
> А чем оно лучше clang-format для C++?
Или uncrustify. Оно вообще настраивается как угодно.
| |
|
3.10, ананим.orig (?), 13:39, 23/01/2015 [^] [^^] [^^^] [ответить]
| +5 +/– |
> Оно вообще настраивается как угодно.
Очевидно гуглу не нужно "как угодно".
Им нужно как у них принято.
Ваш КО.
| |
|
4.12, Аноним (-), 13:43, 23/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
>> Оно вообще настраивается как угодно.
> Очевидно гуглу не нужно "как угодно".
> Им нужно как у них принято.
> Ваш КО.
-> конфиг для uncrustify.
| |
|
|
|
|
2.21, тоже Аноним (ok), 14:17, 23/01/2015 [^] [^^] [^^^] [ответить]
| +5 +/– |
Форматировать надо так, чтобы минимизировать время понимания кода и вероятность ошибок.
Все остальное - не каноны, а просто способы. Даже если это способ от самих K & R.
| |
2.43, Аноним (-), 15:45, 23/01/2015 [^] [^^] [^^^] [ответить]
| +/– |
Только как в новости либо так:
> int foo(int* x) {
> return *x * *x;
> } | |
|
1.22, Аноним (-), 14:23, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
в стандартной поставке clang-format есть гугловский стиль, кстати очень удобный, и плагин для vim.
в стандартной поставке Go есть средство форматирования кода и, опять же, плагин для vim.
Резюме: в Гугле у кого-то резко обострился NIH-синдром.
| |
1.27, Аноним (-), 14:43, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
этот плагин исключительно для тех людей, что код пишут только так, как показано в первом варианте:
> int foo(int * x) { return * x** x ; }
для них проще плагин наклепать, чем их переучить.
потому и наклепали.
тут важно другое: что за программисты в гугле работают, что им такие плагины нужны и что способны "* x** x" выдать?
| |
1.31, Аноним (-), 14:54, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
а ничего что vim это умеет из коромбки на основе настраиваемого indent? Выделяем код и нажимаем кнопку "="
| |
|
2.34, cr (??), 15:34, 23/01/2015 [^] [^^] [^^^] [ответить]
| +1 +/– |
Встроенный индент уже умеет что-то кроме (внезапно) индентации?
| |
|
1.39, waker (ok), 15:42, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
в анонсе написано, что javascript умеет. на самом деле:
:FormatCode
Not available. codefmt doesn't have a default formatter for this buffer.
это у меня руки из Ж, или анонс врет?
| |
|