搜尋

搜尋結果

Lambda 表達式之可讀性
科技新知
MacauYeah・2023-11-24

Java作為一個真OOP物件導向的程式,在設計和編寫上是很嚴謹,什至是囉嗦的程度。近年很多Programmer因為各種原因,都放棄Java跳船去其他語言。 Javascript是其中一個很多人的選擇,因為Javascript有nodejs的加持,在Web世界下,可以同時走frontend、backend路線。而Javacript亦有一個很明顯的特性,就是大部份的library都以callback的型式出現。另外,Javascript也讓很多人覺得很簡潔,這除了是因為它沒有強型態的規限外,另一個原因也是因為有callback的大量使用。 Function Pointer 其實callback,籠統一點講就是在一個function A傳入另一個function pointer B。而編寫function A的作者,並初期並不知道function pointer B的實際操作會是什麼。A作者只是強調在特別定時候,它就會使用這個function pointer B。而這種把function pointer 傳來傳去的做法,就可以看成是Functional Programming的基礎。 Functional Programming除了把function pointer 當成是一等公民以外,還有很多附加要求,例如: Pure Function 它只會使用到自己的Local Variable本地變數,這樣它的作用域就鎖死在Function內部,就不會有副作用。 傳統的OOP,Class中不少變數會以Class Attribute型式存在,雖然它們可能是private attribute,但還是獨立於Function外,這樣各Function的操作,都要靠作者好好地記著Class Attribute的狀態。 Nested Functions 與普通程式語言類似,很多情況下都需要local variable,而Function Programming要足夠好用的話,就需要彈性地在function裏定義local function pointer。 Java Lambda 表達式 其實從Java 8開始,就有提供Lambda表達式,這是一個可以制作匿名function pointer的方法。所以硬要講,Java也可以做Functional Programming。 但必需要盡早強調的是,Java經常性地使用class attribute,它們很多時候都會引申請狀態的概念。即是在它們必需經過特定步驟後,class attribute才會有特定的意義。也就是Lambda表達式想保持Pure Function的特性,它可以使用的時期就有很大限制。 但我們還有必要使用Lambda嗎 以筆者的經驗來講,它還是有作用的,特別在於它可以改善Class Function的閱讀性。 例如下面一個Java Class。它是一個工廠,提供一個服務可以生產一堆車。那些車而需要經過特定檢測,才能推出。 public class Factory ex1 public static List generateListOfCarByForLoop List tempCars = new ArrayList; many other logic many other logic many other logic List passTestCars = new ArrayList; for Car car tempCars if car.getWheels.size == 4 many other check logics many other check logics many other check logics passTestCars.addcar; return passTestCars; 中間的for loop可以用lambda來改寫。 ex2 public static List generateListOfCarByLamda List cars = new ArrayList; many other logic many other logic many other logic cars = cars.stream.filtercar gt; if car.getWheels.size == 4 many other check logics many other check logics many other check logics return true; return false; .toList; return cars; 有人會說,上述ex2只是形式上改變了,沒有特別易讀。就像ex3這樣,把特定邏輯抽成獨立function,才是真正的易讀,對嗎 ex3 public static List generateListOfCarByForLoopFunction List tempCars = new ArrayList; many other logic many other logic many other logic List passTestCars = filterCarsByWheelsSizetempCars, 4; return passTestCars; private static List filterCarsByWheelsSizeList originalList, int targetSize List passTestCars = new ArrayList; for Car car originalList if car.getWheels.size == targetSize many other check logics many other check logics many other check logics passTestCars.addcar; return passTestCars; 上述ex3是一個有效的改進。如果大家不計較傳入參數的先後順序及交互影響的話,就已經很足夠。 但如果大家對於多參數的解讀又怎樣 private static List someotherfunctionList cars, List wheels 大家又會不會突然停住,想想到底是cars影響wheels,還是wheels影響cars 對於多參數的function來講,相互影響就會越來越多,但使用Lambda的話,可以針對性地表達這是一個Predicate Lambda。 ex4 public static List generateListOfCarByLamdaComposition List cars = new ArrayList; many other logic many other logic many other logic List wheels = new ArrayList4; cars = cars.stream.filter filterCarByWheelSizePredicatewheels .toList; return cars; private static Predicate filterCarByWheelSizePredicateList wheels return car gt; if car.getWheels.size == wheels.size many other check logics many other check logics many other check logics return true; return false; ; 就最後的ex4版本,可以很明確的知道是cars被Predicate所作用。 如果大家還有其他使用Lambda的明顯好處,也可以一起來Github分享大家的Code

美獅美高梅為5,000多名團隊成員舉行盛大歡迎會
專題報導
LifeMag Editor・2018-01-23

美獅美高梅為5,000多名團隊成員舉行盛大歡迎會 所有團隊成員經已準備就緒為賓客成就璀璨時刻 定於1月29日開業之美獅美高梅近日舉辦了一系列活動,歡迎5,000多名團隊成員。活動包括歡迎大會與酒店導賞活動,藉此讓各成員熟悉這家全澳最創新的綜合度假酒店的各項多元體驗與運作的同時,亦激勵他們繼續力求卓越,團結一致為自身、團隊以至賓客成就璀璨時刻。 全新綜合度假酒店美獅美高梅糅合創新與前瞻科技,當中的亞洲首個多元化動感劇院「美高梅劇院」,坐擁全球最大永久室內LED顯示屏,為賓客呈獻獨特的娛樂體驗。為此,公司特意在美高梅劇院為5,000多名團隊成員舉辦共四場的盛大歡迎會,不僅以別出心裁的時裝表演展示美獅美高梅各營運部門的全新制服,還首映駐場表演劇目之一《炫》,讓團隊成員先睹為快,體驗美獅美高梅的嶄新娛樂項目。 美高梅中國控股有限公司首席執行官及執行董事簡博賢先生與一眾管理層成員一起出席歡迎大會,為大家打氣。簡博賢先生在致辭中勉勵所有成員:「美高梅是創意娛樂的先驅,所有團隊成員都是當中的非凡表演者。今天大家聚首一堂,不僅只是慶祝,亦標誌著美高梅踏入另一段璀璨旅程。美獅美高梅是為澳門人精心打造,並成就於所有團隊成員的才華、熱情和決心。大家是首批見證美獅美高梅誕生的團隊成員,就讓我們一同享受這一重要旅程,成就屬於我們的璀璨時刻。」 為讓來自不同部門和職級的成員進一步認識新酒店的各項設施,公司舉辦了酒店導賞活動,讓約2,000名前線工作的成員參觀視博廣場、美高梅劇院、餐廳、會議與活動設施、水療中心等區域,為開業前作好準備。 此外,美高梅更精心準備「美獅奇美繪」活動,為一系列歡迎活動打響頭炮。團隊成員發揮創意,在大型畫布上一筆一劃填繪美獅美高梅內的各個奇美勝景,創作同時凝聚團隊精神,共同迎接新酒店的開業。