首先,這是在正常不過的寫法了…
login/
LoginActivity.java
LoginFragment.java
LoginAdapter.java
為什麼會說這 正常?因為本來這三個 class 是該放在 同個檔案 Login.java
啊!
因為 java 的一個 class 必需有獨立的檔案,所以才會分一大堆零碎的檔案。
不過,這種小限制也沒什麼大不了的,就把他們拆在同個 package 內,也可以管理的很乾淨/自然。
不管什麼語言/平台,應用程式大多數都該用 feature 分,不會錯太多。
題外話…
Strict-Transport-Security: max-age=31536000; includeSubDomains
includeSubDomains
的立意良好,就是連所有的子網域都要求 https。
不過我發現 實務 上有時候會有問題…
比方說你做了個網站 https://kaif.io
,的確,這是新站,所以底下如果有 https://api
.kaif.io 之類的的確應該一起保護...
不過,有時候你會整合外部的系統,例如 http://blog
.kaif.io 其實是架在別的服務上,雖然它可以接受自訂 domain,但現階段還沒有辦法接上 https,要等半年之類的…
如果遇上這種事情一開始的 includeSubDomains
的決策就是錯的,而且無法回頭 (都存在 client 的 browser 裡了,清不掉)。
一個服務什麼時候會需要整合外部舊網站是很難說的,而舊服務要升級到 https 的時程更難預估 (技術債之所以是技術債… )。我們可不是活在完美的世界啊… (如果是完美的世界就通通都是 https 了,要 HSTS 幹嘛?)
個人建議實務上不要在 top domain 用 includeSubDomains
,每個 domain 自己設自己的 HSTS 就好了,避免未來無法復原。
啊,忘了提,這個 angular dart 2 後台程式是從一個 angular dart 1 重寫而成的。
angular dart 1 是 2 的實驗先行版,因為是實驗性質,所以是個孤兒…
angularjs1 可以和 angularjs2 共存,然後慢慢轉移,這是因為 js 用戶強烈的需求,才讓 angularjs 的開發者做這些共存的功能。
angular dart 1 就沒這麼好了,它直接死掉,原用戶也只能重寫了 (反正我猜全世界用戶不到 100 個...)
我這個後台大概花二、三個禮拜重寫完,不過其中也包含了追加新功能,所以也很難說到底花多少時間。嘛… 這就是用 dart 的技術債,你沒有平順轉移的選擇,只能重寫... 我現在又是掉了 angular dart 2 的坑了,什麼時候還要重寫一次就不知道了。
感覺用 dart 很危險啊?!但我覺得用 js 某方面來說更兇險,資源很多沒錯啦,但每幾週就來個全新的 framework/library 是另類痛苦...
雖然不太相關... 不過最近才寫了個六千行的 angular dart 2 的後台。
angulardart2 的功能追不上 angularjs,大概還停在 angularjs 2.0.0 那個時期的功能,尤其是 routing 方面很弱…
不過寫個小後台是夠用了。第二代 angular 的語法很怪,但要學的東西其實很少,過了幾個門檻後就是一直寫 component 兜網站,一整個滿滿的 component 啊。相較於angularjs1 簡單太多了,維護/學習曲線都蠻容易的。
angular 連目錄/檔名什麼的都規定的死死的,你就一直照著無腦寫就好了,component 一旦太大就拆小一點,這樣維護性就不會太差。不用強求什麼進階的 immutable 啦,redux 啦那種硬要掰成 functional 思維來寫程式。
雖然我是寫 angular dart,但我猜 typescript 也差不了多少,ts 行數可能多個一兩千行而已吧?dart 的 async/await 真是用太爽了,我整個程式沒有半行 .then({ .... })
這種 callback chain 。
儘管如此,一般專案還是老實的用 angular2 吧,dart 版實在不推,雖然 angulardart 的文件很難得的非常完整 (god send!),但其他資源少的可憐… 不論是人力資源上還是元件庫資源都是,這會造成企業後續支援/擴充很麻煩,有違採用 angular 的本意。
我個人覺得 angular2 很適合企業用來開發工具或後台,它有點死版,也不夠潮,但想到人員訓練和較短的學習期,加上採用的人又多。即使原開發者離職流動,後續的人也不會太難銜接,這不是企業最需要的嗎?
ps. 我的angular dart 小後台的程式 gzip 後的 js 要 1.1MB (unzip 4MB),握槽!