Участник:Shersh/Оформление — различия между версиями
Shersh (обсуждение | вклад)  (убрано правило про 1-индексацию; лучше привыкать к тому, как сделано всё в нормальных языках программирования)  | 
				Shersh (обсуждение | вклад)   (→Псевдокод)  | 
				||
| Строка 26: | Строка 26: | ||
* Дополнение к концепции Python-style (надо понимать, что фигурные скобки, лишние круглые скобки, двоеточия (но после имени функции можно) и многое другое {{---}} всё сделано для того, чтобы написать компилятор было проще, а программы компилировались быстрей, поэтому в псевдокоде надо стараться избегать всяких особенностей конкретного языка программирования, чтобы повысить читаемость кода)    | * Дополнение к концепции Python-style (надо понимать, что фигурные скобки, лишние круглые скобки, двоеточия (но после имени функции можно) и многое другое {{---}} всё сделано для того, чтобы написать компилятор было проще, а программы компилировались быстрей, поэтому в псевдокоде надо стараться избегать всяких особенностей конкретного языка программирования, чтобы повысить читаемость кода)    | ||
** Операторы, ключевые слова, примитивные типы данных оборачивать в тройные кавычки ('''for''', '''if''', '''return''', '''and''', '''pushFront''', '''int''' и другие)  | ** Операторы, ключевые слова, примитивные типы данных оборачивать в тройные кавычки ('''for''', '''if''', '''return''', '''and''', '''pushFront''', '''int''' и другие)  | ||
| − | |||
*** Подписывайте аргументы функциям и переменным в псевдокоде. Можно не обязательно всем, но чтобы не возникало динамической типизации  | *** Подписывайте аргументы функциям и переменным в псевдокоде. Можно не обязательно всем, но чтобы не возникало динамической типизации  | ||
| − | ****   | + | **** Вместо '''void''' писать '''function''', '''func''' или '''fun''   | 
| + | **** Типы аргументов и функций желательно указывать через двоеточие после имени  | ||
| + | ***** '''fun''' print(a : '''list<T>''')  {...} <font color=green> // аналог '''void''' </font>  | ||
| + | ***** '''fun''' get(index : '''int''') : '''int''' {...} <font color=green> // функция, возвращающая '''int''' </font>  | ||
** Использовать словесное обозначение логических операций ('''and''', '''or''', '''xor''', '''not''' вместо &&, ||, !)  | ** Использовать словесное обозначение логических операций ('''and''', '''or''', '''xor''', '''not''' вместо &&, ||, !)  | ||
*** Вместо побитового '''xor'''-а ^ (крышечка) лучше писать <tex> \oplus </tex> (ниже о том, зачем это нужно)  | *** Вместо побитового '''xor'''-а ^ (крышечка) лучше писать <tex> \oplus </tex> (ниже о том, зачем это нужно)  | ||
Версия 16:33, 6 июня 2014
Основные правила написаны здесь и здесь.
Далее приводится дополнительный список требований (что подразумевается, явно не написано, всякие уточнения, красивости, сборка из правил оформления других участников) который поможет сделать вики-конспекты красивее, лучше, понятнее. Старайтесь везде добавлять англоязычные термины.
Tex
-  Переменные и константы в тексте оборачивать в tex
- (сравни x, y, 1)
 
 -  Классы чисел оборачивать в \mathbb 
- Натуральные числа (сравни )
 
 -  Классы и функции оборачивать в \mathrm
- Класс регулярных языков (сравни )
 
 -  Вместо \mod использовать \bmod, когда применяется как бинарная операция
- (сравни )
 
 -  Вместо \le и \ge использовать \leqslant и \geqslant 
- (сравни )
 
 -  Для сдвигов (арифметических и нет) использовать \ll, \gg, \lll, \ggg вместо << и >> 
- (сравни )
 
 - Хинт: можно использовать \to вместо \rightarrow (\from нет, к сожалению):
 -  Пары обозначать в \langle \rangle, а не в больше-меньше
- (сравни )
 
 -  Иногда в техе заменять многоточие на \dots
- (сравни )
 
 
Псевдокод
- Старайтесь называть переменные осмысленно, когда это возможно (s = a — плохо, sz = N — уже получше, size = newSize — идеально)
 -  Дополнение к концепции Python-style (надо понимать, что фигурные скобки, лишние круглые скобки, двоеточия (но после имени функции можно) и многое другое — всё сделано для того, чтобы написать компилятор было проще, а программы компилировались быстрей, поэтому в псевдокоде надо стараться избегать всяких особенностей конкретного языка программирования, чтобы повысить читаемость кода) 
-  Операторы, ключевые слова, примитивные типы данных оборачивать в тройные кавычки (for, if, return, and, pushFront, int и другие)
-  Подписывайте аргументы функциям и переменным в псевдокоде. Можно не обязательно всем, но чтобы не возникало динамической типизации
- Вместо void' писать function, func или fun
 -  Типы аргументов и функций желательно указывать через двоеточие после имени
- fun print(a : list<T>) {...} // аналог void
 - fun get(index : int) : int {...} // функция, возвращающая int
 
 
 
 -  Подписывайте аргументы функциям и переменным в псевдокоде. Можно не обязательно всем, но чтобы не возникало динамической типизации
 -  Использовать словесное обозначение логических операций (and, or, xor, not вместо &&, ||, !)
- Вместо побитового xor-а ^ (крышечка) лучше писать (ниже о том, зачем это нужно)
 - Вместо лучше писать in.
 - Можно переставлять логические операции для повышения читаемости: element not in set
 - Проверку типов и приведение к типу (если вдруг понадобится) писать как is и as
 
 - new _НЕ_ писать при создании экземпляра класса
 -  При нисходящем for писать downto
- Итерируясь по объектам (рёбра, работы и другие) желательно использовать foreach, чтобы было понятно — используется другой вид for, хотя в языке программирования они вполне могут быть реализованы более-менее одинаково
 - Можно писать for по числам через две точки (for i = 1..10) или через to (for i = 1 to 10), но надо понимать, что последний элемент итерации включается, а внутри одного конспекта придерживаться одного стиля
 
 -  enum-поля класса или константы выделять курсивом в псевдокоде
- Это относится и к общеязыковым константам true и false
 
 -  У методов size(), length() можно не писать круглые скобки — трудно придумать случай, когда реализация функций отличается от просто поля в экземпляре класса чем-то существенным (это уже просто инкапсуляция языков программирования)
- len(queue), len(array) не писать — лишние скобки мешают читаемости
 - TODO: надо ли заменять isEmpty на ?
 
 
 -  Операторы, ключевые слова, примитивные типы данных оборачивать в тройные кавычки (for, if, return, and, pushFront, int и другие)
 - Комментарии можно писать как через #, так и через //, так же можно и через /**/, но последний оформлять в javadoc стиле. Главное, придерживаться одного выбранного формата в рамках конспекта. Ещё очень наглядно обозначать комментарии зелёным цветом: // например, вот так
 -  Разрешаемые случаи использования tex в псевдокоде:
- вместо null
 - вместо !=
 - вместо <= и >=
 - TODO: сильно ли оправдано вместо swap(a, b)?
 - и другие виды скобок, если возвращается в функции какой-то сложный объект (например объект )
 - Теоретико-множественные операции:
 - Возведение в степень в псевдокоде не писать через ^ (путается с xor). Лучше использовать ** или tex.