Skip to content

Commit fe3325b

Browse files
committed
principles post fixed
1 parent 2cf7c6b commit fe3325b

File tree

2 files changed

+35
-35
lines changed

2 files changed

+35
-35
lines changed

_drafts/2019-10-07-solid.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ class NotesView() {
190190

191191
fun init() {
192192
notes.add(AudioNote("audio", "description", File("audio.mp3"), "transcription"))
193-
notes.add(VideoNote("video", "description", File("video.mp4"), File("subtitlex.txt")))
193+
notes.add(VideoNote("video", "description", File("video.mp4"), File("subtitles.txt")))
194194
notes.add(TextNote("text", "description", "content"))
195195
}
196196

@@ -252,7 +252,7 @@ class NotesView() {
252252

253253
fun init() {
254254
notes.add(AudioNote("audio", "description", File("audio.mp3"), "transcription"))
255-
notes.add(VideoNote("video", "description", File("video.mp4"), File("subtitlex.txt")))
255+
notes.add(VideoNote("video", "description", File("video.mp4"), File("subtitles.txt")))
256256
}
257257

258258
fun playNote(index: Int) {

_drafts/2019-10-28-kiss.md

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class NumberManager(private var number: Int) {
3232
}
3333
}
3434

35-
class numbermanager(private var mNumber: Int) {
35+
class number_manager(private var mNumber: Int) {
3636

3737
companion object {
3838
const val oneHundred = 100
@@ -182,6 +182,37 @@ object OrderUtilsFixed {
182182
}
183183
{% endhighlight %}
184184

185+
## YAGNI
186+
Reguła `YAGNI` (`You Ain't Gonna Need`) mówi o tym, aby w momencie tworzenia kodu umieszczać w nim tylko to co jest lub będzie na pewno potrzebne. Zastosowanie reguły po części realizuje zasadę `KISS`, tzn. niepotrzebny i nieużywany kod mógłby utrudnić zrozumienie projektu. Istnieje spora szansa, że nieużywane fragmenty i funkcjonalności, które powstają przy okazji realizacji innych zadań w przyszłości mogą być zupełnie niepotrzebne lub wymagania zmienią się na tyle, że wymuszą zmianę implementacji. W związku z czym pisanie kodu na przyszłość (np. zestawu funkcji walidacyjnych) może okazać się stratą czasu. Biorąc pod uwagę zasady `KISS` i `YAGNI` należy zastanowić się nad bilansem zysków i strat dla wprowadzania rozwiązań uniwersalnych bez istnienia żadnych alternatywnych typów w momencie tworzenia.
187+
188+
{% highlight kotlin %}
189+
object Validator {
190+
191+
//at this moment there is only need to valid password and email
192+
//for register and login purpose
193+
194+
fun isPasswordValid(password: String): Boolean {
195+
val pattern = Pattern.compile("^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{6,}$")
196+
val matcher = pattern.matcher(password)
197+
return matcher.matches()
198+
}
199+
200+
fun isEmailValid(email: String): Boolean {
201+
val pattern = Pattern.compile("^.+@.+\\..+$")
202+
val matcher = pattern.matcher(email)
203+
return matcher.matches()
204+
}
205+
206+
//don't make polish phone number validator, it costs time to create regex
207+
//there is no need to use it in app at this moment
208+
fun isPhoneNumberValid(number: String): Boolean {
209+
val pattern = Pattern.compile("(?<!\\w)(\\(?(\\+|00)?48\\)?)?[ -]?\\d{3}[ -]?\\d{3}[ -]?\\d{3}(?!\\w)")
210+
val matcher = pattern.matcher(number)
211+
return matcher.matches()
212+
}
213+
}
214+
{% endhighlight %}
215+
185216
## Testowanie
186217
Dobra praktyką w metodyce testów jest testowanie jak najmniejszej jednostki. W trakcie tworzenia przypadków testów dąży się do uproszczenia problemów do zadań atomowych. Im mniejsze i prostsze metody testowe tym lepiej dla jakości testów.
187218

@@ -240,35 +271,4 @@ class ValidatorTestFixed {
240271
{% endhighlight %}
241272

242273
## Dokumentacja
243-
Dokumentacja projektowa również powinna być tworzona w taki sposób, aby była zrozumiała dla potencjalnych odbiorców. Na jej podstawie programista powinien być zdolny do zastosowania funkcjonalności i ewentualnego rozszerzenia projektu. Niewątpliwie dobrze i prosto napisany interfejs znacznie ułatwia tworzenie zrozumiałej dokumentacji.
244-
245-
## YAGNI
246-
Reguła `YAGNI` (`You Ain't Gonna Need`) mówi o tym, aby w momencie tworzenia kodu umieszczać w nim tylko to co jest lub będzie na pewno potrzebne. Zastosowanie reguły po części realizuje zasadę `KISS`, tzn. niepotrzebny i nieużywany kod mógłby utrudnić zrozumienie projektu. Istnieje spora szansa, że nieużywane fragmenty i funkcjonalności, które powstają przy okazji realizacji innych zadań w przyszłości mogą być zupełnie niepotrzebne lub wymagania zmienią się na tyle, że wymuszą zmianę implementacji. W związku z czym pisanie kodu na przyszłość (np. zestawu funkcji walidacyjnych) może okazać się stratą czasu. Biorąc pod uwagę zasady `KISS` i `YAGNI` należy zastanowić się nad bilansem zysków i strat dla wprowadzania rozwiązań uniwersalnych bez istnienia żadnych alternatywnych typów w momencie tworzenia.
247-
248-
{% highlight kotlin %}
249-
object Validator {
250-
251-
//at this moment there is only need to valid password and email
252-
//for register and login purpose
253-
254-
fun isPasswordValid(password: String): Boolean {
255-
val pattern = Pattern.compile("^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{6,}$")
256-
val matcher = pattern.matcher(password)
257-
return matcher.matches()
258-
}
259-
260-
fun isEmailValid(email: String): Boolean {
261-
val pattern = Pattern.compile("^.+@.+\\..+$")
262-
val matcher = pattern.matcher(email)
263-
return matcher.matches()
264-
}
265-
266-
//don't make polish phone number validator, it costs time to create regex
267-
//there is no need to use it in app at this moment
268-
fun isPhoneNumberValid(number: String): Boolean {
269-
val pattern = Pattern.compile("(?<!\\w)(\\(?(\\+|00)?48\\)?)?[ -]?\\d{3}[ -]?\\d{3}[ -]?\\d{3}(?!\\w)")
270-
val matcher = pattern.matcher(number)
271-
return matcher.matches()
272-
}
273-
}
274-
{% endhighlight %}
274+
Dokumentacja projektowa również powinna być tworzona w taki sposób, aby była zrozumiała dla potencjalnych odbiorców. Na jej podstawie programista powinien być zdolny do zastosowania funkcjonalności i ewentualnego rozszerzenia projektu. Niewątpliwie dobrze i prosto napisany interfejs znacznie ułatwia tworzenie zrozumiałej dokumentacji.

0 commit comments

Comments
 (0)