【重構】使用 strategy pattern 來取代複雜的 switch cases 與 if/else statement
上回在客戶那邊跟著他們一起重構 legacy code 中一大陀的 if/else if 裡面複雜的邏輯。(不同層級、模組的 cache 中做不同的處理)
因為當時時間有限,大家技能水平普遍有點跟不上,所以雖然讓產品程式碼變得乾淨一點,但對學習重構來說,大家少的東西還是太多了。
因此答應了他們,會再弄個簡單一點的範例,包含重構的過程步驟,source code,以及重構的操作過程錄成影片,供他們台灣跟國外的 RD 可以學習跟練習。
--
這例子其實也是我幾年前 3 天 TDD 版本中,重構的 workshop 裡面擷取出來的一段核心,從 C# 換成了 Java,只是重構過程的行雲流水程度,已經今非昔比了。有興趣的朋友可以看一下,我是怎麼用 IDE 在重構的。
身為 JetBrains Taiwan 的 training partner,總是要有點功力才能撐得起這個資格啊。
--
※ 影片網址:https://www.youtube.com/watch?v=zO-NnNC-xyg&feature=youtu.be&ab_channel=JoeyChen
我不定時會錄一些技術相關的影片,有興趣就來按一下小鈴鐺訂閱吧。
※ GitHub commit history: https://github.com/tdd-best/strategy-sample/commits/video
※ 想要了解更完整的來龍去脈,想要讓自己能動手作到一樣的事,想要玩比這範例更進階、更實務的重構與 TDD,2021 年五月的梯次,只剩下 4 個名額啦:https://tdd.best/courses/tdd-continuous-refactoring-2021-05/
話說這個梯次我拍胸脯保證 100% 會額滿的,因為我正在翻譯相關的經典書,屆時會補上更多相關的內容。
#IntelliJ
#Refactoring
#StrategyPattern
同時也有198部Youtube影片,追蹤數超過2萬的網紅Untyped 對啊我是工程師,也在其Youtube影片中提到,Coding vs Programming 軟體工程師在 編碼 or 編程? | 5 Differences between Coding and Programming【電腦說人話】 - 軟體工程師到底在幹嘛?內行外行怎麼說? Coding? Programming? 程式設計?編碼編程?想到電腦...
if一行java 在 Eric's English Lounge Facebook 的精選貼文
[教育資源] 美國哈佛大學線上課程
Here are more free classes from Harvard while we are stuck at home waiting for school to reopen! The following are seven courses that will help prepare you for the challenges of today’s dynamic and fast-changing world.
當我們被困在家等待學校重新開放時,有更多來自哈佛大學的免費課程提供給大家! 這裡提供七項課程來幫助大家,應對來自當今這充滿活力與快速變化的世界的挑戰。
★★★★★★★★★★★★
1. Introduction to Computer Science 電腦科學導論
https://www.edx.org/course/cs50s-introduction-to-computer-science
Knowing how to code is a vital skill in in today’s digital world. This entry level course teaches the basics of computational thinking, programming problem solving, data structures, and web development, among other things. It will leave the learner able to code in several languages including C, Python, and Java.
在當今的數位世界中,知曉如何編碼乃是至關重要的技能。 本入門課程教授運算思維、程式編寫與問題解決、資料結構和網頁開發等基礎知識。 它將使學習者能夠使用多種程式語言包括C,Python和Java進行編碼。
★★★★★★★★★★★★
2. The Architectural Imagination 建築的想像力
https://www.edx.org/course/the-architectural-imagination
Art and science are often viewed in opposition to one another, but in the field of architecture they meet in fantastic and beautiful ways. In this class, students will learn both the technical and cultural aspects of architecture, and gain a better understanding of how the buildings we inhabit relate to history, values, and pragmatic concerns.
人們常常將藝術與科學放在對立面,但在建築的領域,它們以奇妙而優美的方式相遇。在本課程中,學生將學習建築的技術和文化層面,並更好地了解我們所居住的建築與歷史、價值和實用主義的關係。
★★★★★★★★★★★★
3. Super-Earths and Life 超級地球與生命
https://www.edx.org/course/super-earths-and-life
What life lies beyond our small world? Thirty years ago we only knew about nine planets; today we know of thousands nearby stars. In this course, students will learn about exoplanets, which ones might be the best candidates for harboring life, and why those planets are of the greatest interest. Combining concepts in astronomy and biology which have rarely been put together before, the class is an excellent introduction to one of the most interesting eras in astrobiology; today.
在我們的小小世界之外,還有什么生命存在? 三十年前,我們只知道九大行星。 如今,我們知道附近有數千顆恆星在沿著軌道運行著。 在本課程中,學生將學習系外行星的知識,哪些可能是庇護生命的最佳選擇,以及為什麼這些行星最受關注。該課程將天文學和生物學的概念相結合乃少有前例,這堂導論在如今這個天文生物學領域中最有趣的時代之一是極精彩的。
★★★★★★★★★★★★
4. Leaders of Learning 學習的領導者
https://www.edx.org/course/leaders-of-learning
How do you learn? Why do you learn? Can you name three people who would share your answers? In this class, students will identify their own style of learning and find out how that style fits into the ever-changing landscape of education. Later lectures focus on how to apply that knowledge to leadership, organizational structure, and the future of learning.
你如何學習? 你為什麼要學習? 你能說出三個可以分享答案的人嗎? 在本課程中,學生將辨認自己的學習風格,並了解該風格如何適應不斷變化的教育環境。 後段課程聚焦於如何將這些知識應用於領導力、組織結構和未來。
★★★★★★★★★★★★
5. Using Python for Research 運用Python於研究
https://www.edx.org/course/using-python-for-research
Do you want to learn to code, and then learn how to actually use it? In this course, students will review the basics of the Python coding language and then learn how to apply that knowledge to research projects by means of tools such as NumPy and SciPy. This class is an intermediate level course, and a basic understanding of the Python language is ideal before beginning.
你想學習編碼,然後學習如何實際使用它嗎?在本課程中,學生將回顧Python編碼語言的基礎知識,然後學習如何通過NumPy和SciPy等工具將這些知識應用於研究計畫。 該課程是中級課程,在上課之前對Python語言有基本的了解為佳。
★★★★★★★★★★★★
6. American Government 美國政府
https://www.edx.org/xseries/harvardx-us-government
The federal government of the United States can seem like a far off and alien system, one which acts in strange ways; but it is a powerful force in the life of every American. To not understand how it works, and your place in it as a citizen and voter, is to be an irresponsible citizen. This course introduces students to the function, history, institutions, and inner workings of American government. No previous study or understanding of American politics is required, making the course ideal for non-American students who want to understand what exactly is going on there.
美國聯邦政府看起來像個運作方式奇特,遙不可及的陌生體系。 但在每個美國人生活中這是一股強大的力量。 如果不了解它是如何運作的,以及自己作為公民和選民在其中所處的位置,會成為不負責任的公民。 本課程向學生介紹美國政府的職能、歷史、機構及其內部運作。 無需對美國政治的事前學習與了解,使該課程成為想要了解美國到底發生了什麼的非美國學生的理想選擇。
★★★★★★★★★★★★
7. Humanitarian Response to Conflict and Disaster 人道主義對衝突與災難的應對
https://www.edx.org/course/humanitarian-response-to-conflict-and-disaster
We live in a world with staggering humanitarian crises, and responses to them that are often lacking. In this class, students will ask questions on how to deal with humanitarian disasters through the case studies of Zaire, Syria, The Balkans, and elsewhere. The history of humanitarian responses, and the frameworks that those responses past and present operate in, will be covered as well, and students will be challenged to ask if they remain sufficient.
我們生活在充滿令人震驚的人道主義危機的世界中,而對這些危機往往缺乏應對。 在本課程中,學生將通過薩伊、敘利亞、巴爾幹地區和其他地區的案例研究,提出有關如何應對人道主義災難的問題。本課程還將涵蓋人道主義應對的歷史以及過去與現在的應對所運行的框架,並且挑戰學生去提出這些應對是否足夠。
★★★★★★★★★★★★
美國名校的免費線上課程 (MOOCs)
https://bit.ly/2Um51WO
英國名校MOOC平台
https://bit.ly/3eYUOYe
留學獎學金: https://bit.ly/3e9vrT0
★★★★★★★★★★★★
英文資料來源: https://bit.ly/2Y7p1gR
圖片來源: https://bit.ly/2UipYC2
★★★★★★★★★★★★
教育時評:http://bit.ly/39ABON9
if一行java 在 AppWorks Facebook 的最佳貼文
【科技新創職場爆文推薦:非理工背景又怎樣?只要有熱情 一樣找到一片天】
🚀 500+ 科技新創職缺招募倒數十天,錯過下個夏天見 >>> http://bit.ly/33Kv1Oz
〖九彎十八拐的職涯,不要害怕做出選擇〗
如果你正站在人生岔路,不曉得下一步該往哪走?不知道要去大公司還新創?別急,曾經我也是這樣的。一直以來我都不是走一條循規蹈矩的路,而成為一名軟體工程師也不需要循規蹈矩。
小時候曾想當天文學家,高中卻選了文組,到了大學又念政治系,卻還是不確定自己想要甚麼。大三去了芬蘭的漢肯經濟學院當交換學生,在交換的期間,我選修了幾堂 Java 和資訊系統的課,從此開啟了我對程式語言的熱愛。
回到台灣後,為了追求自己所愛,同時想讓自己變得更強,經過多方請益與上網研究,最後我決定報名參加 AppWorks School 為期三個月免費的密集訓練學程。
〖人才必備軟實力: 團隊合作及解決問題〗
AppWorks School 以培養軟體工程師人才為目的,我在 2016 年時加入,是第二屆學員,主修 iOS。AppWorks School 的教學方式以實務為導向,當開始對程式語言逐漸上手後,我們會開始獨立做不同的專案,我當時就創造了兩款 App -- 一款幫助人們找尋共享腳踏車,另一款則結合社交和觀星。
在 AppWorks School 的訓練是軟硬實力的培養,工程師除了寫程式的能力外,我認為有「團隊合作」及「自行解決問題」兩項軟實力至關重要。當你在開發產品過程中遇到困難時,是否能先自行尋找解決方法,是否願意不斷吸收新知,而不是急著尋求他人給你答案? 而當你要與他人合作開發時,你是否有良好的溝通能力? 脫離了 if - else 的邏輯後,你是否知道如何與他人完美互補,而出色的完成任務? 我想這些是對工作非常重要的。
結束三個月的訓練後,我成功透過 AppWorks School 與科技新創的媒合面試上 WeMo Scooter 的 iOS 工程師,開始了我在新創的冒險與成長。
〖在認同的願景,找到自我價值,最大化影響力〗
WeMo Scooter 結合「共享經濟」及「綠能環保」,提供另一種友善環境的交通選擇,民眾若欲使用 WeMo Scooter 的電動機車,只需下載 App,註冊後搜尋附近可使用車輛,就可以用 App 發動、租還,省去傳統鑰匙的不便,目前一台 WeMo Scooter 的使用率,相當於減少 4 - 5 台的燃油機車上路。
在WeMo Scooter 裡有很強的向心力,每個人都是共享電動機車的熱愛者,每個人都為自己每天創造的永續綠色城市感到期待。我們私下有個群組,大家會在上面回報機車狀況;甚至走在路上只要看到我們的機車停在不該停的地方,也會立馬放下手邊的事,將車移到合法處,同事們都很自動自發地做一些事情,想讓公司可以更好。
我一直認為,工作一定要選產業或領域是自己感興趣的,或公司理念和個人價值有連結,因為工作佔了人生很重要的一部分,每天都要為一個願景奮鬥的話,那我一定要和它很有共鳴。我很喜歡共享電動機車的服務,也對 WeMo 想打造綠色生活很有認同感。
〖從鐵皮屋的車庫創業,見證近 10 倍成長的瘋狂新創起飛〗
我加入 WeMo Scooter 時,整個公司裡的工程師只有我和另一位 Senior Engineer,當時正職加實習生不超過 15人,一起在一個台北橋下的鐵皮屋奮鬥,超有車庫創業的氛圍。兩年半之間,公司搬到了市中心,而人數也成長到120人。我很幸運參與到公司將近 10 倍的成長過程,這種機會可能只有在新創比較能參與到,學習非常多。隨著公司規模擴大,整個組織架構也就更完善,跨部門溝通與合作就變得越來越重要,對我而言又是一波全新的學習,感覺很棒。
在新創工作是件非常有趣又具有挑戰的事,團隊人數不多,因此每個人有很大機會能獨立負責重要項目,這也會讓人快速成長,就像我剛加入不久後,因為團隊任務調整,公司十分信任我,就直接將許多 iOS 的重要專案交給我,於是我要學著獨立負責專案,當初在 AppWorks School 培養起的 「獨立解決問題」能力,在此時就顯得至關重要。
我想這就是新創的迷人所在,你不會因為只是新鮮人,就成為一根螺絲釘,相反的,你會成為公司高速前進的風火輪。我很開心能在這裡找到自己的價值,參與這股綠色交通革命,發揮影響力,讓社會變得更美好。
王迺瑜小檔案
現職: WeMo Scooter iOS工程師
學歷: 國立政治大學政治系 、漢肯經濟學院
🚀 不想畫地自限 突破自我趁現在 >>> http://bit.ly/33Kv1Oz
By Joy Chiang, AppWorks 校友社群經理
if一行java 在 Untyped 對啊我是工程師 Youtube 的最讚貼文
Coding vs Programming 軟體工程師在 編碼 or 編程? | 5 Differences between Coding and Programming【電腦說人話】
-
軟體工程師到底在幹嘛?內行外行怎麼說?
Coding? Programming? 程式設計?編碼編程?想到電腦科學就會想到這些詞,但是它們到底是什麼意思?差別又在哪呢?
讓凱心琳告訴你這兩個詞的5大層面的差別!
(Tools 使用工具, Expertise 專業知識, Approach 方法途徑, Outcome 成果產出, Learning 學習過程)
在這個人手好幾台電腦的時代,實在是有好多電腦的詞聽不懂。Cookie 不再是好吃的餅乾,Class不再是學生上的課,Bug 因為非常不一樣的原因而令人討厭。Coding, Programming 兩個詞表面上好像一樣,但是實際上卻截然不同。好多詞不懂~沒關係!讓 Untyped 為你解惑!
【電腦說人話】這個系列是希望透過口語化的方式,透過生活中的例子去介紹一些看似艱澀像外星語但實際上卻不難懂的電腦科學專有名詞。希望能讓曾經對這些詞彙充滿畏懼與疑惑的妳,能夠不再害怕,勇敢學習Computer Science!
【㊫ 電腦科學/軟體工程 學習資源 📖】
全端工程師密技 Full Stack Eng - Career Path (Codecademy)
https://bit.ly/3niTwLN
前端工程師密技 Front End Eng - Career Path (Codecademy)
https://bit.ly/32K1eql
用Scala學習函式程式設計
https://bit.ly/2IF0Thv
Scala 函数式程式設計原理
https://bit.ly/3kBQXTb
平行程式設計
https://bit.ly/3pCeaZf
Android 應用程式開發 專項課程
https://bit.ly/3lGCUwW
普林斯頓大學 電腦科學 演算法 基礎理論
https://bit.ly/3nxomAh
Go 語言學起來
https://bit.ly/35AWhlv
Parallel, Concurrent, and Distributed Programming in Java 專項課程
https://bit.ly/2IGnlH4
Java 軟體工程基礎課程
https://bit.ly/3fa4gJi
全端開發 跨平台手機app 開發 完整課程
https://bit.ly/2UCGWum
#程式設計 #Programming #電腦說人話
一定要看到影片最後面並且在「YouTube影片下方」按讚留言訂閱分享唷!
-
歡迎留言告訴我你的想法,或是你想認識的程式語言唷!
每(隔週)週四晚上9點更新,請記得開啟YouTube🔔通知!
-
【相關連結】
Coding vs Programming
[https://www.codementor.io/@edwardbailey/coding-vs-programming-what-s-the-difference-yr0aeug9o]
[https://www.educba.com/coding-vs-programming/]
[https://www.goodcore.co.uk/blog/coding-vs-programming/]
【愛屋及烏】
Facebook 臉書粉專 👉 [https://www.facebook.com/untyped/]
Instagram 👉 [[https://www.instagram.com/untypedcoding/]
合作邀約 👉 untypedcoding@gmail.com
-
Untyped 對啊我是工程師 - There are so many data types in the world of computer science, so are the people who write the code. We aim to UNTYPE the stereotype of engineers and of how coding is only for a certain type of people.
凱心琳: 一個喜歡電腦科學邏輯推理,在科技圈努力為性別平等奮鬥的女工程師。
-
This video contains affiliate links, which means that if you click on one of the product links, I'll receive a small commission.
圖片影片音效:[giphy.com] [pngwave.com][freesound.org][soundbible.org]
【Disclaimer 聲明】
Some links are affiliated.
上面有些連結是回饋連結,如果你透過這些連結購買商品,我可以得到一些小獎勵,但不會影響到你購買的價格,甚至會是更低的價格!謝謝你的支持💕
if一行java 在 吳老師教學部落格 Youtube 的最佳貼文
文化JAVA物件導向程式設計2016_3(類別應用與運算子與重覆控制)
今天課程內容:
01_複習中文API設定與增加Scanner類別
02_版本控制與細節說明
03_改寫為JOptionPane的輸入方式
04_改寫為showMessageDialog與輸出可執行的JAR檔
05_如何解出JAR檔與反組譯CLASS
06_修改程式庫設定與跳脫字元練習
07_運算子與Switch範例
08_Switch車票範例與改寫為IF
09_Switch性別範例與改寫為IF
10_重覆控制for迴圈與奇數加總
11_For範例與巢狀結構
完整影音:
https://www.youtube.com/playlist?list=PLCfL1sBZ2_STmLOmuI7w2_j8BQXcama4a
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/java_object2016
懶人包:http://terry55wu.blogspot.com/p/android.html
主要以實例說明為主,比較具體。至於抽象理論書上都有詳細說明,
請大家配合範例研讀,應該會更好了解的。
課程理念:Android智慧型手機平台,已成為手機上最完整的開放開發平台
人手必備的趨勢下行動上網已達1000萬人次以上,手機相關應用,將會超越PC,比PC更智慧,更貼近個人使用習慣,未來APP將漸取代Web,成為各產
業或政府對外窗口。
如何開發APP,以循序漸進的方式講授Android應用程式架構、圖形介面開發、測試與除錯等,進而取得證照。
吳老師教學特色:
1.影音複習分享(全程錄影)。
2.能不硬code程式,有程式也會提供畫面。
3.提供業界實務開發經驗。
4.書上沒講到的操作,圖形化工具使用。
5.隨時更新第一手資訊。
6.可延伸證照考試解題(TQC+)。
7.提供雲端影音連結
8.提供部落格教學日誌
9.提供論壇登入問題討論
上課用書:
Java SE 7與Android 4.x程式設計範例教本
作者:陳會安
本學期課程目標:
1.把JAVA融入到Android
2.Android入門
3.Android範例詳解
1.把JAVA融入到Android
於是將拿自己最熟悉的JAVA證照題目,
用最好的開發環境 ECLIPSE開發JAVA變得很重要,
可惜目前要找到如何用 ECLIPSE開發 JAVA的書籍似乎闕如,
但要開發JAVA與Androdi就一定要學好ECLIPSE,
於是劇本流程:
1.ECLIPSE的環境建置。
2.新建JAVA專案,開始寫101題樂透彩模擬程式。
3.轉成視窗介面。
4.輸出程執行檔,可以在WINDOWS、MAC、LINUS等環境執行。
5.將專案改成APP。
上下來還蠻緊湊,因為也要繳交作業,學生開始變得更積極。
回家之後我就變成後製,又搖身一半為部落客,
寫文分享JAVA開發經驗。
Android 教學研習心得分享懶人包:
http://terry55wu.blogspot.com/p/android.html
吳老師
java下載 jdk eclipse java教學網站 java教學影片 "java eclipse教學" "eclipse 教學" java證照解答 AWT類別 電腦證照
if一行java 在 吳老師教學部落格 Youtube 的最佳貼文
文化JAVA物件導向程式設計2016_3(類別應用與運算子與重覆控制)
今天課程內容:
01_複習中文API設定與增加Scanner類別
02_版本控制與細節說明
03_改寫為JOptionPane的輸入方式
04_改寫為showMessageDialog與輸出可執行的JAR檔
05_如何解出JAR檔與反組譯CLASS
06_修改程式庫設定與跳脫字元練習
07_運算子與Switch範例
08_Switch車票範例與改寫為IF
09_Switch性別範例與改寫為IF
10_重覆控制for迴圈與奇數加總
11_For範例與巢狀結構
完整影音:
https://www.youtube.com/playlist?list=PLCfL1sBZ2_STmLOmuI7w2_j8BQXcama4a
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/java_object2016
懶人包:http://terry55wu.blogspot.com/p/android.html
主要以實例說明為主,比較具體。至於抽象理論書上都有詳細說明,
請大家配合範例研讀,應該會更好了解的。
課程理念:Android智慧型手機平台,已成為手機上最完整的開放開發平台
人手必備的趨勢下行動上網已達1000萬人次以上,手機相關應用,將會超越PC,比PC更智慧,更貼近個人使用習慣,未來APP將漸取代Web,成為各產
業或政府對外窗口。
如何開發APP,以循序漸進的方式講授Android應用程式架構、圖形介面開發、測試與除錯等,進而取得證照。
吳老師教學特色:
1.影音複習分享(全程錄影)。
2.能不硬code程式,有程式也會提供畫面。
3.提供業界實務開發經驗。
4.書上沒講到的操作,圖形化工具使用。
5.隨時更新第一手資訊。
6.可延伸證照考試解題(TQC+)。
7.提供雲端影音連結
8.提供部落格教學日誌
9.提供論壇登入問題討論
上課用書:
Java SE 7與Android 4.x程式設計範例教本
作者:陳會安
本學期課程目標:
1.把JAVA融入到Android
2.Android入門
3.Android範例詳解
1.把JAVA融入到Android
於是將拿自己最熟悉的JAVA證照題目,
用最好的開發環境 ECLIPSE開發JAVA變得很重要,
可惜目前要找到如何用 ECLIPSE開發 JAVA的書籍似乎闕如,
但要開發JAVA與Androdi就一定要學好ECLIPSE,
於是劇本流程:
1.ECLIPSE的環境建置。
2.新建JAVA專案,開始寫101題樂透彩模擬程式。
3.轉成視窗介面。
4.輸出程執行檔,可以在WINDOWS、MAC、LINUS等環境執行。
5.將專案改成APP。
上下來還蠻緊湊,因為也要繳交作業,學生開始變得更積極。
回家之後我就變成後製,又搖身一半為部落客,
寫文分享JAVA開發經驗。
Android 教學研習心得分享懶人包:
http://terry55wu.blogspot.com/p/android.html
吳老師
java下載 jdk eclipse java教學網站 java教學影片 "java eclipse教學" "eclipse 教學" java證照解答 AWT類別 電腦證照