Updated Architectural Decision Records (markdown)

Rsl1122 2018-08-23 18:31:42 +03:00
parent 8e3443e75d
commit 39e298ff5f
1 changed files with 12 additions and 6 deletions

@ -9,7 +9,7 @@ It has been made so that new developers can more easily work on the project. The
This page was first written on **23.08.2018**, so decisions made before that are post fact.
Last Modified: **23.08.2018**
### 1.0.0 - 1.6.2 (1st - 27th December 2016)
### 1.0.0 - 1.6.2 (1st - 27th December 2016)
First Java Project by Rsl1122.
@ -18,7 +18,7 @@ First Java Project by Rsl1122.
**Important Features:** `/plan inspect` and `/plan analyze` commands display information in game
**Plugin at this state:** https://www.spigotmc.org/resources/planlite-player-analytics-lite.34889/
### 2.0.0 (28th December 2016 - 16th January)
### 2.0.0 (28th December 2016 - 16th January 2017)
**Development Goal:** Display statistics on a website, hosted from a web server on the plugin.
**Development Goal:** Start recording own data
@ -145,6 +145,10 @@ Impact: Due to default values being absent from the locale keys, it becomes diff
**Development goal:** Support BungeeCord networks
**Architectural Decision:** Abstraction Layer between Plan and server platforms: [Abstract Plugin Framework](https://github.com/Rsl1122/Abstract-Plugin-Framework)
Impact: Hard to change code in the abstraction framework when Plan doesn't work.
**Architectural Decision:** Database Schema based on Server table
Impact: Multiple servers are supported, more join operations in queries. Most of old data has to be discarded due to bad database schema
@ -190,12 +194,14 @@ Impact: 1.7.X servers supported again
**Architectural Decision:** Refactor plugin to different "Systems"
Impact: Easier to develop.
Impact: Easier to develop. Serves as an Abstraction layer between a platform specific plugin and the functionality. Testing is easier.
**Bad Architectural Decision:** Make "Systems" accessible via static `getInstance()` methods
**Architectural Decision:** Make "Systems" accessible via static `getInstance()` methods
This decision came from exposure to Kingdoms API, which uses getInstance() methods that seemed convenient.
Unforseen at the time, this increases their usage everywhere and this can lead to a lot of code smells further down the line.
This decision came from exposure to Kingdoms API, which uses `getInstance()` methods that seemed convenient.
Implementation on Plan does not work, because on Kindoms the modules are singletons, on Plan they are not.
Impact: Increased usage of static everywhere and this can lead to a lot of code smells further down the line. Testing is difficult.
### 4.2.0 (2nd May - 7th April 2018)