* docs: update chromium development-related documentation * chore: remove obsolete clang-format doc clang-format linting and fixing is a pre-commit hook now * docs: update debugging documentation * docs: misc updates * Update docs/development/debugging-on-windows.md Co-authored-by: Micha Hanselmann <mh74182@gmail.com> * Update docs/development/README.md Co-authored-by: Mark Lee <malept@users.noreply.github.com> * Update docs/development/README.md Co-authored-by: Mark Lee <malept@users.noreply.github.com> * Update docs/development/README.md Co-authored-by: Mark Lee <malept@users.noreply.github.com> * Update docs/development/README.md Co-authored-by: Mark Lee <malept@users.noreply.github.com> * Update docs/development/README.md Co-authored-by: Mark Lee <malept@users.noreply.github.com> * Update docs/development/README.md Co-authored-by: Mark Lee <malept@users.noreply.github.com> * Update docs/development/debugging-on-macos.md Co-authored-by: Mark Lee <malept@users.noreply.github.com> * Update docs/development/testing.md Co-authored-by: Mark Lee <malept@users.noreply.github.com> * Update docs/development/testing.md Co-authored-by: Mark Lee <malept@users.noreply.github.com> Co-authored-by: Micha Hanselmann <mh74182@gmail.com> Co-authored-by: Mark Lee <malept@users.noreply.github.com> Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
		
			
				
	
	
	
	
		
			3.5 KiB
			
		
	
	
	
	
	
	
	
			
		
		
	
	Coding Style
These are the style guidelines for coding in Electron.
You can run npm run lint to show any style issues detected by cpplint and
eslint.
General Code
- End files with a newline.
 - Place requires in the following order:
- Built in Node Modules (such as 
path) - Built in Electron Modules (such as 
ipc,app) - Local Modules (using relative paths)
 
 - Built in Node Modules (such as 
 - Place class properties in the following order:
- Class methods and properties (methods starting with a 
@) - Instance methods and properties
 
 - Class methods and properties (methods starting with a 
 - Avoid platform-dependent code:
- Use 
path.join()to concatenate filenames. - Use 
os.tmpdir()rather than/tmpwhen you need to reference the temporary directory. 
 - Use 
 - Using a plain 
returnwhen returning explicitly at the end of a function.- Not 
return null,return undefined,nullorundefined 
 - Not 
 
C++ and Python
For C++ and Python, we follow Chromium's Coding
Style.
There is also a script script/cpplint.py to check whether all files conform.
The Python version we are using now is Python 2.7.
The C++ code uses a lot of Chromium's abstractions and types, so it's recommended to get acquainted with them. A good place to start is Chromium's Important Abstractions and Data Structures document. The document mentions some special types, scoped types (that automatically release their memory when going out of scope), logging mechanisms etc.
Documentation
- Write remark markdown style.
 
You can run npm run lint-docs to ensure that your documentation changes are
formatted correctly.
JavaScript
- Write standard JavaScript style.
 - File names should be concatenated with 
-instead of_, e.g.file-name.jsrather thanfile_name.js, because in github/atom module names are usually in themodule-nameform. This rule only applies to.jsfiles. - Use newer ES6/ES2015 syntax where appropriate
constfor requires and other constants. If the value is a primitive, use uppercase naming (egconst NUMBER_OF_RETRIES = 5).letfor defining variables- Arrow functions
instead of 
function () { } - Template literals
instead of string concatenation using 
+ 
 
Naming Things
Electron APIs uses the same capitalization scheme as Node.js:
- When the module itself is a class like 
BrowserWindow, usePascalCase. - When the module is a set of APIs, like 
globalShortcut, usecamelCase. - When the API is a property of object, and it is complex enough to be in a
separate chapter like 
win.webContents, usemixedCase. - For other non-module APIs, use natural titles, like 
<webview> TagorProcess Object. 
When creating a new API, it is preferred to use getters and setters instead of
jQuery's one-function style. For example, .getText() and .setText(text)
are preferred to .text([text]). There is a
discussion on this.