Commit 6622d77
committed
Standardize controllers (#59)
This commit standardizes the MachineController to make it has the union of its children's methods.
We keep MachineController as it were and add 'CarControllerBase'
for car-formed machines such as the car form of Nxt / Ev3 and Pile robots,
and rename NxtController after it (NxtCarController).
By this change, the previous block classes and resources related to the car-formed machines
can be moved in 'main' variant and we decide to keep them in 'car' package for readability
(StopForSecBlock is not moved because it doesn't depend on the car-formed machines' method).
This commit also cleans string resources.
* TL;DR
** Background
We talked over the design of controllers again and again offline, and we had two options;
- Make controllers for each machine (Nxt, Ev3, Pile, etc.) so that they have their specific methods
(e.g., Pile Robot doesn't have ColorSensor, thus it doesn't have getColorSensorValue or something like that)
and keep the MachineController as it is.
- Make the common MachineController that has the union of methods of these controllers.
They actually have pros & cons and our opinions conflicted. But finally, at present, we decided to choose the latter.
** Pros & Cons of the former
*** Pros
- Straightforward way and thus readable. This is very important for developers.
- They can be easily tested.
*** Cons
- There will be many duplications of codes because these controllers use [our library](https://github.com/PileProject/drivecommand)'s
MachineBase that provides the same interface to control machines (so, we will have very similar codes in blocks like
[ForwardSecBlock](https://github.com/PileProject/drive/blob/develop/app/src/nxt/java/com/pileproject/drive/programming/visual/block/sequence/ForwardSecBlock.java)
in each build variant) but we currently can't make the most of it because of the design.
- It doesn't follow the design of [our library](https://github.com/PileProject/drivecommand). But we can fix that of our library easily.
** Pros & Cons of the latter
*** Pros
- It follows the design of [our library](https://github.com/PileProject/drivecommand).
- It commonizes the blocks through MachineController interface. Thus, it reduces the duplicated codes not only *.java but also *.xml.
- Easy to maintain because the codes are unified.
*** Cons
- It is difficult to test each variant.
- Not straightforward way.
- Users can't know what kinds of methods each controller has, and make it worse,
calling wrong methods lead to RuntimeError not CompileError.
- Poor extensibility. We should add/remove a method to/from MachineController itself if new machines with new methods.
So, maybe we should make an another layer for other machines something
like MachineController -> CarController, DroneController (i.e., not use the MachineController as the current NxtController's parent).
** Why we chose the latter
This was a very difficult problem for us but we took the pros of the latter.
Maintaining duplicated codes *.java and *.xml is very annoying
and we can easily change our mind when a new type of machine comes
if we keep the unified codes clean.1 parent 9b9dcdc commit 6622d77
79 files changed
Lines changed: 968 additions & 702 deletions
File tree
- .idea
- copyright
- app/src
- androidTest/java/com/pileproject/drive/execution
- main
- java/com/pileproject/drive
- database
- execution
- machine
- preferences
- programming/visual
- activity
- block
- repetition
- selection
- car
- sequence
- car
- layout
- setting/machine
- util/development
- res
- drawable-hdpi
- layout
- values-ja
- values
- nxt
- java/com/pileproject/drive
- execution
- machine
- module
- preferences
- programming/visual/block
- selection
- setting/machine
- view
- res
- layout
- values-ja
- values
- gradle/wrapper
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
20 | 22 | | |
21 | 23 | | |
22 | 24 | | |
| |||
30 | 32 | | |
31 | 33 | | |
32 | 34 | | |
| 35 | + | |
| 36 | + | |
33 | 37 | | |
34 | 38 | | |
35 | 39 | | |
| |||
38 | 42 | | |
39 | 43 | | |
40 | 44 | | |
41 | | - | |
| 45 | + | |
42 | 46 | | |
43 | 47 | | |
44 | | - | |
| 48 | + | |
| 49 | + | |
45 | 50 | | |
46 | 51 | | |
47 | 52 | | |
| |||
53 | 58 | | |
54 | 59 | | |
55 | 60 | | |
56 | | - | |
| 61 | + | |
57 | 62 | | |
58 | 63 | | |
59 | 64 | | |
| |||
76 | 81 | | |
77 | 82 | | |
78 | 83 | | |
79 | | - | |
| 84 | + | |
80 | 85 | | |
81 | 86 | | |
82 | 87 | | |
83 | 88 | | |
84 | 89 | | |
85 | 90 | | |
86 | 91 | | |
87 | | - | |
| 92 | + | |
88 | 93 | | |
89 | 94 | | |
90 | 95 | | |
91 | 96 | | |
92 | 97 | | |
93 | 98 | | |
94 | 99 | | |
95 | | - | |
| 100 | + | |
96 | 101 | | |
97 | 102 | | |
98 | 103 | | |
99 | 104 | | |
100 | 105 | | |
101 | 106 | | |
102 | | - | |
| 107 | + | |
103 | 108 | | |
104 | 109 | | |
105 | 110 | | |
106 | 111 | | |
107 | 112 | | |
108 | 113 | | |
109 | 114 | | |
110 | | - | |
| 115 | + | |
111 | 116 | | |
112 | 117 | | |
113 | 118 | | |
| |||
181 | 186 | | |
182 | 187 | | |
183 | 188 | | |
184 | | - | |
185 | | - | |
| 189 | + | |
| 190 | + | |
186 | 191 | | |
187 | 192 | | |
188 | 193 | | |
189 | 194 | | |
190 | 195 | | |
191 | 196 | | |
192 | | - | |
193 | | - | |
| 197 | + | |
| 198 | + | |
194 | 199 | | |
195 | 200 | | |
196 | 201 | | |
| |||
202 | 207 | | |
203 | 208 | | |
204 | 209 | | |
205 | | - | |
206 | | - | |
| 210 | + | |
| 211 | + | |
207 | 212 | | |
208 | 213 | | |
209 | 214 | | |
| |||
215 | 220 | | |
216 | 221 | | |
217 | 222 | | |
218 | | - | |
219 | | - | |
| 223 | + | |
| 224 | + | |
220 | 225 | | |
221 | 226 | | |
222 | 227 | | |
| |||
Lines changed: 1 addition & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
| 27 | + | |
31 | 28 | | |
32 | 29 | | |
33 | 30 | | |
| |||
Lines changed: 27 additions & 30 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
| 33 | + | |
37 | 34 | | |
38 | 35 | | |
39 | 36 | | |
40 | | - | |
| 37 | + | |
41 | 38 | | |
42 | 39 | | |
43 | 40 | | |
| |||
71 | 68 | | |
72 | 69 | | |
73 | 70 | | |
74 | | - | |
| 71 | + | |
75 | 72 | | |
76 | | - | |
| 73 | + | |
77 | 74 | | |
78 | 75 | | |
79 | 76 | | |
80 | 77 | | |
81 | 78 | | |
82 | 79 | | |
83 | | - | |
| 80 | + | |
84 | 81 | | |
85 | | - | |
86 | | - | |
| 82 | + | |
| 83 | + | |
87 | 84 | | |
88 | 85 | | |
89 | 86 | | |
90 | 87 | | |
91 | 88 | | |
92 | 89 | | |
93 | | - | |
| 90 | + | |
94 | 91 | | |
95 | | - | |
96 | | - | |
| 92 | + | |
| 93 | + | |
97 | 94 | | |
98 | 95 | | |
99 | 96 | | |
| |||
141 | 138 | | |
142 | 139 | | |
143 | 140 | | |
144 | | - | |
| 141 | + | |
145 | 142 | | |
146 | | - | |
| 143 | + | |
147 | 144 | | |
148 | 145 | | |
149 | 146 | | |
150 | 147 | | |
151 | 148 | | |
152 | 149 | | |
153 | | - | |
| 150 | + | |
154 | 151 | | |
155 | | - | |
156 | | - | |
| 152 | + | |
| 153 | + | |
157 | 154 | | |
158 | 155 | | |
159 | 156 | | |
160 | 157 | | |
161 | 158 | | |
162 | 159 | | |
163 | | - | |
| 160 | + | |
164 | 161 | | |
165 | | - | |
166 | | - | |
| 162 | + | |
| 163 | + | |
167 | 164 | | |
168 | 165 | | |
169 | 166 | | |
| |||
217 | 214 | | |
218 | 215 | | |
219 | 216 | | |
220 | | - | |
| 217 | + | |
221 | 218 | | |
222 | | - | |
| 219 | + | |
223 | 220 | | |
224 | 221 | | |
225 | 222 | | |
226 | 223 | | |
227 | 224 | | |
228 | 225 | | |
229 | | - | |
| 226 | + | |
230 | 227 | | |
231 | | - | |
| 228 | + | |
232 | 229 | | |
233 | 230 | | |
234 | 231 | | |
| |||
256 | 253 | | |
257 | 254 | | |
258 | 255 | | |
259 | | - | |
| 256 | + | |
260 | 257 | | |
261 | 258 | | |
262 | 259 | | |
263 | 260 | | |
264 | 261 | | |
265 | 262 | | |
266 | | - | |
| 263 | + | |
267 | 264 | | |
268 | | - | |
| 265 | + | |
269 | 266 | | |
270 | 267 | | |
271 | 268 | | |
272 | 269 | | |
273 | 270 | | |
274 | | - | |
| 271 | + | |
275 | 272 | | |
276 | | - | |
| 273 | + | |
277 | 274 | | |
278 | 275 | | |
279 | 276 | | |
| |||
Lines changed: 0 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | 24 | | |
28 | 25 | | |
29 | 26 | | |
| |||
Lines changed: 0 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | 25 | | |
29 | 26 | | |
30 | 27 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
0 commit comments