Compare commits

...

12 Commits

Author SHA1 Message Date
Andrej Gaevskij 129c447646 Явно задана величина отступа для политики 2012-10-04 23:27:55 +04:00
Andrej Gaevskij 154f432e24 Добавил Policies/Default.mdpolicy.xml в .gitignore 2012-05-30 11:34:05 +04:00
Andrej Gaevskij 705ac047d2 Merge pull request #1 from PVoLan/master
Влил изменения Володьки.
Удален файл Default.mppolicy
Добавлено описание установки для Windows
2012-05-30 00:29:32 -07:00
Vladimir Shalimov 2b089b4a08 Запятая 2012-05-29 22:58:20 +04:00
Vladimir Shalimov 11d6f26c67 Minor fixes 2012-05-29 22:57:37 +04:00
PVoLan 3ff00ec28d Добавил инструкцию под Win 2012-05-29 22:55:51 +04:00
PVoLan 3942f6f2c4 Так как в монодевелопе нет настройки (по крайней мере, я не нашел) "Allow one line if", пришлось поменять эту настройку. При форматировании МД автоматом переводит однострочный if в двустрочный (если кто найдет, как ему это запретить, будет круто), а скобочки не добавляет. Эта настройка заставляет его ставить скобочки принудительно. 2012-05-29 22:36:03 +04:00
PVoLan 286cfca38c Дефолтный мдполиси - лишний 2012-05-29 22:32:26 +04:00
Andrej Gaevskij d683527d54 Исправил ссылку на проект стиля кодирования 2012-05-29 15:40:19 +04:00
Andrej Gaevskij ff76f7fb26 Новый скриншот 2012-05-29 15:39:28 +04:00
Andrej Gaevskij 5ebfcb0847 Добавлено описание целей проекта и процесса внесения изменений 2012-05-29 15:34:16 +04:00
Andrej Gaevskij 73e208f52c Добавил описание процесса установки проекта 2012-05-29 15:13:27 +04:00
4 changed files with 72 additions and 234 deletions

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
Policies/Default.mdpolicy.xml.previous Policies/Default.mdpolicy.xml
*.previous *.previous

View File

@ -1,231 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Policies>
<PolicySet name="Default" id="Default">
<DotNetNamingPolicy>
<DirectoryNamespaceAssociation>PrefixedHierarchical</DirectoryNamespaceAssociation>
<ResourceNamePolicy>FileName</ResourceNamePolicy>
</DotNetNamingPolicy>
<VersionControlPolicy inheritsSet="Mono" />
<TextStylePolicy inheritsSet="VisualStudio" inheritsScope="text/plain" scope="text/plain" />
<TextStylePolicy inheritsSet="Mono" inheritsScope="text/plain" scope="text/x-csharp">
<FileWidth>120</FileWidth>
<TabWidth>4</TabWidth>
<NoTabsAfterNonTabs>True</NoTabsAfterNonTabs>
</TextStylePolicy>
<CSharpFormattingPolicy inheritsSet="Mono" inheritsScope="text/x-csharp" scope="text/x-csharp">
<IndentSwitchBody>True</IndentSwitchBody>
<PropertyBraceStyle>NextLine</PropertyBraceStyle>
<PropertyGetBraceStyle>NextLine</PropertyGetBraceStyle>
<PropertySetBraceStyle>NextLine</PropertySetBraceStyle>
<EventBraceStyle>NextLine</EventBraceStyle>
<EventAddBraceStyle>NextLine</EventAddBraceStyle>
<EventRemoveBraceStyle>NextLine</EventRemoveBraceStyle>
<StatementBraceStyle>NextLine</StatementBraceStyle>
<ForBraceForcement>AddBraces</ForBraceForcement>
<ElseNewLinePlacement>NewLine</ElseNewLinePlacement>
<ElseIfNewLinePlacement>SameLine</ElseIfNewLinePlacement>
<CatchNewLinePlacement>NewLine</CatchNewLinePlacement>
<FinallyNewLinePlacement>NewLine</FinallyNewLinePlacement>
<WhileNewLinePlacement>NewLine</WhileNewLinePlacement>
<BeforeMethodDeclarationParentheses>False</BeforeMethodDeclarationParentheses>
<BeforeMethodCallParentheses>False</BeforeMethodCallParentheses>
<BeforeConstructorDeclarationParentheses>False</BeforeConstructorDeclarationParentheses>
<BeforeIndexerDeclarationBracket>False</BeforeIndexerDeclarationBracket>
<BeforeDelegateDeclarationParentheses>False</BeforeDelegateDeclarationParentheses>
<NewParentheses>False</NewParentheses>
<BeforeNewParameterComma>True</BeforeNewParameterComma>
<SpacesBeforeBrackets>False</SpacesBeforeBrackets>
</CSharpFormattingPolicy>
<StandardHeader>
<Text />
<IncludeInNewFiles>True</IncludeInNewFiles>
</StandardHeader>
<NameConventionPolicy>
<Rules>
<NamingRule>
<Name>Namespaces</Name>
<AffectedEntity>Namespace</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Types</Name>
<AffectedEntity>Class, Struct, Enum, Delegate</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Interfaces</Name>
<RequiredPrefixes>
<String>I</String>
</RequiredPrefixes>
<AffectedEntity>Interface</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Attributes</Name>
<RequiredSuffixes>
<String>Attribute</String>
</RequiredSuffixes>
<AffectedEntity>CustomAttributes</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Event Arguments</Name>
<RequiredSuffixes>
<String>EventArgs</String>
</RequiredSuffixes>
<AffectedEntity>CustomEventArgs</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Exceptions</Name>
<RequiredSuffixes>
<String>Exception</String>
</RequiredSuffixes>
<AffectedEntity>CustomExceptions</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Methods</Name>
<AffectedEntity>Methods</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Static Readonly Fields</Name>
<AffectedEntity>ReadonlyField</AffectedEntity>
<VisibilityMask>Internal, Protected, Public</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>False</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Fields (Non Private)</Name>
<AffectedEntity>Field</AffectedEntity>
<VisibilityMask>Internal, Protected, Public</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>ReadOnly Fields (Non Private)</Name>
<AffectedEntity>ReadonlyField</AffectedEntity>
<VisibilityMask>Internal, Protected, Public</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>False</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Fields (Private)</Name>
<AllowedPrefixes>
<String>_</String>
<String>m_</String>
</AllowedPrefixes>
<AffectedEntity>Field, ReadonlyField</AffectedEntity>
<VisibilityMask>Private</VisibilityMask>
<NamingStyle>CamelCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>False</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Static Fields (Private)</Name>
<AffectedEntity>Field</AffectedEntity>
<VisibilityMask>Private</VisibilityMask>
<NamingStyle>CamelCase</NamingStyle>
<IncludeInstanceMembers>False</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>ReadOnly Fields (Private)</Name>
<AllowedPrefixes>
<String>_</String>
<String>m_</String>
</AllowedPrefixes>
<AffectedEntity>ReadonlyField</AffectedEntity>
<VisibilityMask>Private</VisibilityMask>
<NamingStyle>CamelCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>False</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Constant Fields</Name>
<AffectedEntity>ConstantField</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Properties</Name>
<AffectedEntity>Property</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Events</Name>
<AffectedEntity>Event</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Enum Members</Name>
<AffectedEntity>EnumMember</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Parameters</Name>
<AffectedEntity>Parameter</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>CamelCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Type Parameters</Name>
<RequiredPrefixes>
<String>T</String>
</RequiredPrefixes>
<AffectedEntity>TypeParameter</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>PascalCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
<NamingRule>
<Name>Local Variables</Name>
<AffectedEntity>LocalVariable</AffectedEntity>
<VisibilityMask>VisibilityMask</VisibilityMask>
<NamingStyle>CamelCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers>
<IncludeStaticEntities>True</IncludeStaticEntities>
</NamingRule>
</Rules>
</NameConventionPolicy>
</PolicySet>
</Policies>

View File

@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Policies> <Policies>
<PolicySet name="Touchin"> <PolicySet name="Touchin">
<TextStylePolicy inheritsSet="Mono" inheritsScope="text/plain" scope="text/plain"> <TextStylePolicy inheritsSet="VisualStudio" inheritsScope="text/plain" scope="text/plain">
<FileWidth>120</FileWidth> <FileWidth>120</FileWidth>
<TabWidth>4</TabWidth> <TabWidth>4</TabWidth>
<IndentWidth>4</IndentWidth>
<TabsToSpaces>False</TabsToSpaces>
<NoTabsAfterNonTabs>True</NoTabsAfterNonTabs> <NoTabsAfterNonTabs>True</NoTabsAfterNonTabs>
</TextStylePolicy> </TextStylePolicy>
<VersionControlPolicy inheritsSet="Mono" /> <VersionControlPolicy inheritsSet="Mono" />
@ -17,6 +19,7 @@
<EventAddBraceStyle>NextLine</EventAddBraceStyle> <EventAddBraceStyle>NextLine</EventAddBraceStyle>
<EventRemoveBraceStyle>NextLine</EventRemoveBraceStyle> <EventRemoveBraceStyle>NextLine</EventRemoveBraceStyle>
<StatementBraceStyle>NextLine</StatementBraceStyle> <StatementBraceStyle>NextLine</StatementBraceStyle>
<IfElseBraceForcement>AddBraces</IfElseBraceForcement>
<ForBraceForcement>AddBraces</ForBraceForcement> <ForBraceForcement>AddBraces</ForBraceForcement>
<WhileBraceForcement>AddBraces</WhileBraceForcement> <WhileBraceForcement>AddBraces</WhileBraceForcement>
<ElseNewLinePlacement>NewLine</ElseNewLinePlacement> <ElseNewLinePlacement>NewLine</ElseNewLinePlacement>
@ -175,7 +178,7 @@
<RequiredPrefixes> <RequiredPrefixes>
<String>_</String> <String>_</String>
</RequiredPrefixes> </RequiredPrefixes>
<AffectedEntity>Field</AffectedEntity> <AffectedEntity>Field, ReadonlyField</AffectedEntity>
<VisibilityMask>Private, Protected</VisibilityMask> <VisibilityMask>Private, Protected</VisibilityMask>
<NamingStyle>CamelCase</NamingStyle> <NamingStyle>CamelCase</NamingStyle>
<IncludeInstanceMembers>True</IncludeInstanceMembers> <IncludeInstanceMembers>True</IncludeInstanceMembers>
@ -195,7 +198,9 @@
<TextStylePolicy inheritsSet="Mono" inheritsScope="text/plain" scope="text/x-csharp"> <TextStylePolicy inheritsSet="Mono" inheritsScope="text/plain" scope="text/x-csharp">
<FileWidth>120</FileWidth> <FileWidth>120</FileWidth>
<TabWidth>4</TabWidth> <TabWidth>4</TabWidth>
<IndentWidth>4</IndentWidth>
<NoTabsAfterNonTabs>True</NoTabsAfterNonTabs> <NoTabsAfterNonTabs>True</NoTabsAfterNonTabs>
<TabsToSpaces>False</TabsToSpaces>
</TextStylePolicy> </TextStylePolicy>
<DotNetNamingPolicy> <DotNetNamingPolicy>
<DirectoryNamespaceAssociation>PrefixedHierarchical</DirectoryNamespaceAssociation> <DirectoryNamespaceAssociation>PrefixedHierarchical</DirectoryNamespaceAssociation>

64
README.md Normal file
View File

@ -0,0 +1,64 @@
# monodevelop-settings
У этого проекта две основные цели. Во-первых, упрощение внедрения стиля кодирования. Во-вторых, сохранение и распространение лучших практик использования MonoDevelop.
## Что внутри?
* Настройки для автоматического форматирования кода.
* Настройки именования.
* Настройки хоткеев.
* Code templates(ctor) адаптированные под наш стиль кодирования.
## Как установить настройки?
Настройки устанавливаются простым клонированием репозитория в нужную папку.
```bash
mkdir ~/Library/MonoDevelop-3.0-orig/
cp -R ~/Library/MonoDevelop-3.0/ ~/Library/MonoDevelop-3.0-orig/
rm -rf ~/Library/MonoDevelop-3.0/
git clone https://github.com/gaech/monodevelop-settings.git ~/Library/MonoDevelop-3.0/
```
### Пользователям Windows
Пользователи Windows клонируют репозиторий в любое удобное место на компьютере, и далее ручками копируют папки Policies и Snippets в папку
```
C:\Users\%USERNAME%\AppData\Roaming\MonoDevelop-X.X
```
Копировать папку KeyBindings, равно как и делать репозиторий напрямую в папке настроек монодевелопа, не рекомендуется. У макоси нет клавиши Control, а у винды нет клавиши Meta, так что их хоткеи несовместимы.
После успешного клонирования надо изменить глобальные настройки MonoDevelop. `MonoDevelop → Preferences...`
В разделе `Source code → .NET Naming Policies` выставляем `Policy: Touchin`
![](https://github.com/gaech/monodevelop-settings/raw/014f6c45b1b40f69aeba8641a3cca22af635abd9/Screenshots/global-naming-policies.jpg)
В разделе `Source code → Code Formatting → C# source code` выставляем `Policy: Touchin`
![](https://github.com/gaech/monodevelop-settings/raw/2622dd2c61fe2cb0cbf9cd8220285ac95ab7c199/Screenshots/global-code-formating.jpg)
В разделе `Source code → Name Conventions` выставляем `Policy: Touchin` (для Monodeveop 2.8 и младше, походу, неактуально)
![](https://github.com/gaech/monodevelop-settings/raw/014f6c45b1b40f69aeba8641a3cca22af635abd9/Screenshots/global-name-convention.jpg)
Для того чтобы MonoDevelop выделял места, где нарушается соглашение о кодировании, можно включить анализ кода `Other → Source Analysis`
![](https://github.com/gaech/monodevelop-settings/raw/b2c2185b757fb934668d73ae1a79c9ad76448059/Screenshots/source-analysis.jpg)
Настройки будут влиять на новые проекты и решения. В существующих надо изменить настройки вручную.
Если по какой-то причине вы не хотите использовать все общие настройки, то можно скопировать отдельно нужны вам файлы.
## Обновление настроек
```bash
cd ~/Library/MonoDevelop-3.0/
git pull origin master
```
Пользователи Windows делают почти то же самое, но в другую папку, и потом ручками заново копируют нужные настройки в AppData.
## Как поделиться своими наработками?
* Сделать fork проекта. Для этого достаточно нажать кнопку Fork на этой странице.
* Склонировать форк.
* Закоммитить свои изменения.
* Отправить изменения в основной репозиторий. Это делается с помощью кнопки Pull request.
## Ссылки
* https://github.com/gaech/coding-style
## TODO
* Подсказка по хоткеям MonoDevelop
* Подсказка по шаблонам кода