a.ovseenko Posted June 27, 2013 Share Posted June 27, 2013 Hello everybody! Developers, could you give access to the UnigineScrupt style guide? It seems that the customers that would be useful ) Link to comment
binstream Posted June 29, 2013 Share Posted June 29, 2013 It is in Russian only for now (since it was intended for internal use only). Link to comment
a.ovseenko Posted July 1, 2013 Author Share Posted July 1, 2013 Good. If possible, send an e-mail a.ovseenko@suricategames.com or put in this topic. Thanks in advance! Link to comment
anton.stetz Posted July 1, 2013 Share Posted July 1, 2013 and for me, if it possible. stetz.anton@gmail.com Link to comment
maimonides Posted July 12, 2013 Share Posted July 12, 2013 We would also appreciate it, russian is not a problem for us. Link to comment
binstream Posted September 19, 2013 Share Posted September 19, 2013 Форматирование Автоформатирование /source/tools/scripts/Indent/indent.py Правильно раставляет табуляции и убирает висячие строки. На выходе получается name + _indent файл, в консоль выводится информация по висячим строкам. Фигурные скобки прилипшие к тексту или находящиеся в коментариях обрабатываются неправильно. ТабуляцияРазмер табуляции 4 символа. ПробелыПробелы в инструкциях: for(int i = 0; i < 10; i++) {int j = 0; int k = 0; // лучше новую переменную с новой строки или: int l,m,n; // а если надо инициализацию, то с пробелом: int x = 10, y = 11, z = 12; if(i == 10) { return 10; } int counter = 0; while(1) { if(counter++ == 10) break; } } В инициализацию класса обычно помещаются только те члены на которых может случиться краш или еще что-нибудь плохое. Все некритичные мемберы лучше инициализировать внутри конструктора, это проще читать чем список инициализации. Node::Node(int type) : Instance<Node>(this), type(type) {enabled = 1; immovable = 0; } Но если у нас много переменных передается в класс, то в несколько строк. MeshEnumProc::MeshEnumProc(const char *name,int prompt,int selected,int multi_sub,int align,float scale,int digits) :selected(selected), multi_sub(multi_sub), align(align), scale(scale), digits(digits) { } Скобки не переносятся никогда. Висячие запятыеВ массивах и енумах последние запятые надо оставлять. Так проще добавлять новые члены. Если забыть поставить запятую, строки могут склеиться. enum {ONE = 1, TWO, THREE, }; int a[3] = { 0, 1, 2, }; int a[] = ( 0, 1, 2, ); РазделителиФункции отделяются друг от друга или пустым комментарием: /**/void foo() { } или комментарием с описанием: /* it's foo */ void foo() { } Крупные фрагменты между функциями и классами отделяются с помощью разделителя (длиной 80 столбцов): /******************************************************************************\* * it's a heap of code * \******************************************************************************/ Если функция сильно сложная, она разделяется на логические блоки: /////////////////////////////////// depth texture //////////////////////////////// Внутри классов: /**/class Foo { <- две табуляции public: <- две табуляции Foo(); virtual ~Foo(); // variable interface <- комментарий к функции сверху, сначала set, потом get void setVariable(int value); int getVariable(); <- никаких пустых строк, табуляции private: // it's a some function void some_func(); int variable; // it's variable <- комментарии переменных справа }; ИменованиеИмена всего, что не класс и не структура, начинаются с маленькой буквы: void function() {int variable = 10; } В именах не используются префиксные подчеркивания, в крайнем случае можно заюзать постфиксные. Но лучшее решение сокращение имени до одной буквы: void setEnabled(int e) { enabled = e; }void inside(const &vec3 min_,const vec3 &max_); Имена классов и структур начинаются с больших букв: class Foo {struct FooImpl; }; Все имена функций, являющиеся интерфейсными, не содержат подчеркиваний. Подчеркивания используются в именах protected и private функций классов, в простых функциях, не смотрящих наружу, и в переменных. class Foo {public: void setName(const char *name); int getVariable() const; private: void do_set_name(); void do_get_variable() const; int my_variable; }; file.h: void createWindow(int width,int height); file.cpp: static void do_create_window(int width,int height) { } void createWindow(int width,int height) { do_create_window(width,height); } C/C++, UnigineScript МодификаторыПритягивание модификаторов идет к переменным, никаких лишних пробелов: void foo(const int *vertex,int num_vertex);void foo(int **vertex,int &num_vertex); Фигурные скобкиФигурные скобки идут без переноса строк: int func(int a) { if(a = 10) { return 10; } else if(a == 11) { return 11; } // для уменьшения ряби можно так: if(a = 10) { return 10; } else if(a == 11) { return 11; } // или так, если простая конструкция: if(a == 10) return 10; else if(a == 11) return 11; return 1; } ЗначенияИнты все понятно просто число: int i = 12; Флоаты всегда писать с точкой даже если значение целое. И не забывать про модификатор f. float f = 12.12f; ЦиклыВ UnigineScript? использовать forloop вместо for везде где только можно, он быстрее. стандарно: for(int i = 0; i < 10; i++) { } быстрее стандартного: forloop(int i = 0; 10) { } ФайлыИмена файлов начинаются с больших букв и ими же разделяются: SkinnedMesh.hUserInterface.cpp Единственное отличие: main.cpp Инкременты/декрементыДля интов все инкременты декременты постфиксные, префиксные только на итераторах. int i = j++;std::vector<int>::iterator i = ++j; Link to comment
anton.stetz Posted September 20, 2013 Share Posted September 20, 2013 Спасибо, очень полезно! Вопрос по поводу XML. Какую программу используете для работы? Я работаю в VIM, настроил себе сниппеты необходимые, но все равно немного не удобно. Особенно когда делаешь что то большое, типа словаря, куда надо внести все значения. А дополнительно еще и проставить символы переноса, новой строки и т.п. Еще вопрос по VIM. Подскажите какие нибудь интересные плагины, которые вы используете. Thank you, very useful! Question about XML. What program use to work? I work in VIM, set up the necessary snippets, but still a bit inconvenient. Especially when you do something big, like a dictionary, where it is necessary add all the variables. A still further and to put hyphens, newline, etc. Another question for VIM. Tell me what some interesting plug-ins that you use. Link to comment
binstream Posted September 20, 2013 Share Posted September 20, 2013 Bare VIM with no plugins. Some people find Sublime useful for XML editing. Link to comment
Recommended Posts