IngramChen 積分 0 編輯於

沒有統合的感覺而已。新加的語法各自為政

haocheng 積分 0

Java 畢竟是 25 年的語言了,而且 Java 也不會像 Python 2 -> Python 3 那樣大改破壞向後相容,所以增加新的功能或是語法都有很多要考慮的啊

IngramChen 積分 0

結果變成這樣嗎?

p with { x = 3; }

因為沒辦法加上 default parameters 所以又要創新語法/keyword 了。

上次那個 switch 也是又加了一堆新結構,Java 的語法新方向感覺 style 沒有很統一。不像 kotlin 的概念都一樣,又融合的很好…

haocheng 積分 1 編輯於

就是輸入 API endpoint /shop/{id} 來查是定義在哪一個 controller method

剛剛又試了一下發現這個功能還在,不過只有在 Search 的 All 會出現,2020.1 是在 All/Symbols 都會看到...

haocheng 積分 1

用 API endpoint 查 controller method 的功能失效了...

koji 積分 1

indexing中可以提供部分功能看起來不錯,PR看起來我的GitHub Enterprise有點問題...

koji 積分 0

Looking to the future with Java 11 support and ZGC

koji 積分 0

還沒,但裝了可以看看檔案多大,有 8xx MB

haocheng 積分 0

2020.2 才能用耶,koji 有下載 beta 來試試看嗎?

koji 積分 0

看看我的專案,每次 index 都好久

j0n 積分 1

第一次讀 clean code 這本書是在公司的 study group, 那時候第一個直覺是... 不可能,我們不可能完全按照這本書寫的內容實作。 XD

IngramChen 積分 1

這本沒看, 看他這樣寫的確很奇怪

怎麼他自己的建議是一回事, 實作又是另一回事

koji 積分 2 編輯於

所有有些人覺得 Android API 設計得很差....XD

changyuheng 積分 2 編輯於

我想的方向不太一樣。有一種重複,是像開發 Android app 這樣,每一個開發 app 的人都要繼承 Activity (或 Service etc),並部分 overwrite parent 特定的實作。當很多使用 API 的開發者都在一樣的地方做相同的 overwrite 時,也可以看作是重複。

不當的抽象可粗分為二,一為對抽象對象的錯誤解讀造成的不正確的抽象架構設計或不貼切的描述,另一種是為了避免重複而做的過分集中的抽象。我們當然能避免重複,而不重複的方法就是在抽象層做統一的描述,但這同時也造成了收斂。收斂和僵化是一體兩面,因此收斂的同時也減少了彈性;實務上的影響就是未來擴充的東西,一定要能夠被抽象描述表達,這其實是一種畫地自限。

舉個簡單的例子,幾乎所有繼承 Activity 的 app 都要 call onCreate() 的 super(),這也是一種重複,那為何不在 Activity 中就統一做掉?相信這除了是原設計 Activity 的人,希望能在 Activity class 中擁有足夠凝聚的描述,也是希望使用 API 的開發者能對 Activity 的使用有一個制式的規格可以遵循。

建構程式就像拼拼圖,抽象集中的程度好比拼圖塊的大小,較集中的抽象就是較大塊的拼圖,而拼圖塊如果都太大,可能就沒辦法拼成想要的樣子。但拼圖塊太碎,也同樣不好用,而且經驗淺的程式設計師面對太小的碎塊可能會無所適從。我覺得要做出好的取捨的心法是,朝兼顧彈性、易用性但又不鬆散的方向做設計,而不是單純考量如何讓抽象層最凝聚、濃縮 (過度抽象) 或讓使用者做最少操作 (彈性最差)。

chchwy 積分 3 編輯於

抽象都要有明確目的,而不是盲目看到重複就抽象

對我來講,成功的抽象需要符合下面兩點之一

  1. 抽完 code 要變得容易理解
  2. 改動、增加新功能變得容易

簡單講,要反過來思考:已經確定抽象「真的有幫助」,才去進行抽象。

如果沒幫助,那就擺著很長的 if-else 沒差。

IngramChen 積分 2

所以要寫 test

如果比較好測,那通常是比較好的設計。你通常也只會重構到測試不會太難寫這樣,不會太過頭。(class 太多就測試更多,想到這你就會懶得抽這麼多層了)

測試可以引導設計,再加上一些經驗的累積大概不會錯太多。

當然如果寫的是 library ,會放出來給別人用,那又是另一種規則。

j0n 積分 0

這對我來說一直很兩難,原本單純易懂的 if-else 抽成複雜很難 trace 的 class/interface,究竟是真的有幫助還是炫技?

IngramChen 積分 2

這篇又浮上來了

method 加上參數,裡面多寫個 if 進行擴充 -- 這大概工程師每天都在做

所以我覺得這類型的還好,它要累積到一個程度之後,才要重構,看是要回到重覆或是抽得更多層。

出現問題的大部份都是太多參數,就是作者說的,抽象化錯了方向。另一種錯誤是太早將單純的 if 抽成更複雜的 class/interface,也不能說一定錯,但新需求多半不可預知,所以八成都是抽錯方向,不如不抽。

然後更難得問題是,這些修改不一定是同一個人做的…

IngramChen 積分 1

每次只要有機會用到 micronaut, 就有一種清爽的感覺

小, 簡單, 又快. 然後還大部份和 spring 很像

如果 spring 沒有包伏然後重開機的話, 大概就是 micronaut. 而不是現在的 spring boot.

但是你就是知道它不會變 spring 成為主流, 所以只能在小專案玩玩而已...