objc-guide
objc-guide copied to clipboard
Objective-C Coding Guidelines
Introduction
The Objective-C coding conventions guide documents many best practices learned from over a decade of experience developing software on Apple platforms at Microsoft, such as Office for Mac and iOS. This is not a style guide (use clang-format for that), but guidelines that affect implementation.
This document is organized by language area. We have documented many conventions we regularly use by language area, which are accompanied with rationale, examples, and a history if applicable.
Not all teams use every convention documented here and others may be tweaked to be more amendable to team preferences. The intent is to facilitate developing maintainable and robust code. The conventions evolve with the Objective-C language, frameworks, and experience. Feedback and discussion is welcome and encouraged. For details on how to contribute, see the contribution guidelines.
Table of Contents
- Categories
- Alternative Designs
- Naming
- Classes
- Naming
- Documentation
- Patterns
- Exceptions
- Headers
- Factoring
- Import and Include
- Naming
- Instance Variables
- Naming
- Patterns
- Methods and Implementations
- Automatic Reference Counting
- Early Returns
- Implicit Boolean Conversion
- Naming
- Redundant Method Invocations
- Object Creation
- ClassInitialization
- Objective-C++
- PreprocessorDirectives.md
- Properties
- Attributes
- Naming
- Patterns
- Protocols
- Delegates and Data Sources
- Naming
- Patterns
- Syntax
- Dot Notation
- Generics
- Scope
Legal Notices
Microsoft and any contributors grant you a license to the Microsoft documentation and other content in this repository under the Creative Commons Attribution 4.0 International Public License, see the LICENSE file, and grant you a license to any code in the repository under the MIT License, see the LICENSE-CODE file.
Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.
Privacy information can be found at https://privacy.microsoft.com/en-us/
Microsoft and any contributors reserve all other rights, whether under their respective copyrights, patents, or trademarks, whether by implication, estoppel or otherwise.