summaryrefslogtreecommitdiffstats
path: root/src/site-docs/adoc/fragments/howto-codestyle/02-rules.adoc
diff options
context:
space:
mode:
authorramverma <ram.krishna.verma@ericsson.com>2018-07-31 18:25:39 +0100
committerramverma <ram.krishna.verma@ericsson.com>2018-07-31 18:27:31 +0100
commitaf74a6270d6ab6badf04a97495a6ef8ccded9b4b (patch)
tree2c7a536e54207a0870ca2008ce457a64de917ab9 /src/site-docs/adoc/fragments/howto-codestyle/02-rules.adoc
parent9e318f20f2e64970bf3c2e3a5532c516231a6f8a (diff)
Adding first set of apex-pdp document changes
Adding document changes for auth, context, core, model, services & the main apex-pdp module. Change-Id: Id0d026baa258f1dc6998978f9911f3c4a73b5b3b Issue-ID: POLICY-867 Signed-off-by: ramverma <ram.krishna.verma@ericsson.com>
Diffstat (limited to 'src/site-docs/adoc/fragments/howto-codestyle/02-rules.adoc')
-rw-r--r--src/site-docs/adoc/fragments/howto-codestyle/02-rules.adoc38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/site-docs/adoc/fragments/howto-codestyle/02-rules.adoc b/src/site-docs/adoc/fragments/howto-codestyle/02-rules.adoc
new file mode 100644
index 000000000..8b7f122b8
--- /dev/null
+++ b/src/site-docs/adoc/fragments/howto-codestyle/02-rules.adoc
@@ -0,0 +1,38 @@
+//
+// ============LICENSE_START=======================================================
+// Copyright (C) 2016-2018 Ericsson. All rights reserved.
+// ================================================================================
+// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+//
+// SPDX-License-Identifier: CC-BY-4.0
+// ============LICENSE_END=========================================================
+//
+// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+//
+
+== Java coding Rules
+
+* APEX is (in large parts) a platform (or middleware), so link:https://en.wikipedia.org/wiki/Software_design_pattern[Software Design Patterns] are a good thing
+* The link:https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)[Solid Principles] apply
+* Avoid class fields scoped as `protected`
+ ** They break a lot of good design rules, e.g. most SOLID rules
+ ** For a discussion see this link:https://softwareengineering.stackexchange.com/questions/162643/why-is-clean-code-suggesting-avoiding-protected-variables[Stackoverflow Question]
+* If you absolutely need `protected` class fields they should be `final`
+* Avoid `default` scope for class fields and methods
+ ** For fields: use `public` or `private` (see also above)
+ ** For methods: use `public` for general use, `protected` for specialization using inheritance (ideally `final`), `private` for everything else
+* Method parameters that are not changed in the method should be marked `final`
+* Every package must have a `package-info.java` file with an appropriate description, minimum a descriptive one liner
+* Every class must have
+ ** The common header (copyright, file, date)
+ ** Javadoc header for the class with description of the class and author
+ ** Javadoc for _all public__ fields
+ ** If possible, Javadoc for __private__ fields, at least some documentation for private fields
+ ** Javadoc for __all__ methods
+* All project must build with all tests on Unix, Windows, __and__ Cygwin
+ ** Support all line endings in files, e.g. `\n` and `\r\n`
+ ** Be aware of potential differences in exception messages, if testing against a message
+ ** Support all types of paths: Unix with `/`, Windows with an optinal drive `C:\` and `\`, Cygwin with mixed paths
+
+