[爆卦]物件導向程式設計書是什麼?優點缺點精華區懶人包

雖然這篇物件導向程式設計書鄉民發文沒有被收入到精華區:在物件導向程式設計書這個話題中,我們另外找到其它相關的精選爆讚文章

在 物件導向程式設計書產品中有32篇Facebook貼文,粉絲數超過1萬的網紅91 敏捷開發之路,也在其Facebook貼文中提到, 【從學員練習影片觀察到一個關於 TDD 的有趣現象】 極速開發的課後練習作業,雖說重點是放在極速開發要學習的技巧與刻意練習的模型,但開發的方式、順序也是刻意安排成類似 TDD 的進行方式,來讓生產力最大化(TDD 本來就是幫助開發的,不是幫助測試的) 我從2位第一次上我課的學員(當然就是 #極速...

 同時也有106部Youtube影片,追蹤數超過7萬的網紅在地上滾的工程師 Nic,也在其Youtube影片中提到,對於設計模式的學習有多方派系持不同意見,但仔細去思考,會發現設計模式的存在是避免自己發明愚蠢的設計在已經常出現的問題上,在日新月異的科技進步下,隨著商業邏輯更加複雜,軟體工程師所遭遇到的問題也一次比一次還難 Design Pattern 的存在是幫助思考,避免不必要的協作災難,只要能懂得這點並融會...

  • 物件導向程式設計書 在 91 敏捷開發之路 Facebook 的精選貼文

    2021-09-26 14:17:31
    有 57 人按讚

    【從學員練習影片觀察到一個關於 TDD 的有趣現象】

    極速開發的課後練習作業,雖說重點是放在極速開發要學習的技巧與刻意練習的模型,但開發的方式、順序也是刻意安排成類似 TDD 的進行方式,來讓生產力最大化(TDD 本來就是幫助開發的,不是幫助測試的)

    我從2位第一次上我課的學員(當然就是 #極速開發,代表他們沒上過#單元測試 跟 #TDD與持續重構),雖然他們是照著示範影片、上課教學用 TDD 在寫整個 tennis 的過程,但從他們執行測試的時間點就可以發現:

    「他是用測試來驗證 production code 的正確性」,即使他先寫了測試,也不先執行,沒有看到紅燈,每次都等到 production code 寫完了,應該要綠燈時,才執行測試。

    而其他上過 TDD 課的同學 ,或是上過單元測試的同學,知道測試是用來描述情境,如果現在「加入的這個情境是新的需求或需求異動,代表目前 production code 還不支援這個情境,執行測試跑出的紅燈,就是等等 production code 要完成的 #目標」

    test-frist 從來都只是 TDD 其中一個小小的衍生產物,而不是全貌。TDD, 測試驅動開發 從來都是一種開發方法,而不是測試方法。

    總有些人老愛把 TDD 拿來跟測試相提並論,就總是喜歡把 test-first 當作靶子打,覺得違反人性跟直覺,覺得先寫測試在很多情況下是浪費時間或是不 work,可能拿來跟一堆測試的方法論相提並論,或總是只拿回歸測試的效益來當作 TDD 的整體。抑或是陷入 isolation unit test 與 integration test (其實就是非 isolation 等級、有實際依賴的自動測試)之爭。

    ```
    註:TDD 事實上是可以不是單元測試等級的。
    ```

    要比較正確看待 TDD 的角度,首先要知道它是幫助開發的、它是一種開發方式(當然不是唯一一種,甚至也不會是最好的一種,因為根本沒有最好,只有剛好)

    接著要了解 TDD 可能用 IPO 模型還比較貼切,input-process-output,在你開發任何功能之前,你總要先想過這件事。而先想這件事,才是 TDD 的最基本精神。

    接著是怎麼把你想好的東西,變成可執行的 spec,我們只是用測試程式來「描述」你腦袋中的「IPO模型」,把 process 的過程當作一個黑箱子。

    而這個 IPO 模型在結合成「使用情境」,就會帶來「高易用性 API 的好處」,只有在一開始就先想好怎麼給別人用,最後才會好用。所謂的一開始想好,指的不是預先設計一堆 class,而是 input/output 想清楚期待(一般會結合實例化需求,搭配 Given/When/Then 的 gherkin style 來把前置條件、資料、前提想好,當發生什麼事,應該是怎樣的結果),然後描述它。在紅燈定義清楚目標,綠燈完成 input/output 關係且沒弄壞前面的所有情境後,來針對 process 進行重構(事實上 Kent Beck 的 TDD by Example 更多是用 refactor 來 #完成 process。

    ```
    註:所謂的 output 不一定只有回傳值,包含外部依賴狀態、資料的改變,甚至顆粒度小一點,針對物件導向設計的話,物件內部狀態的改變也算,只是物件內部狀態改變,驗證點要嘛是拿得到內部狀態,要嘛就是要驗證物件哪個行為會因這個內部狀態而有所不同。
    ```

    ## 戰 TDD 之前該先做好的功課
    要戰 TDD,是不是至少要把 Kent Beck 的 TDD by Example 看完?

    要戰 TDD,請不要拿它跟測試方法論來比,那只是一下就被人看破手腳。因為它是個開發方法論。

    要戰 TDD,請不要把它的好處只限縮在跟回歸測試、自動測試的比較,因為那只是它的衍生好處,當你試過在白海報紙上 TDD 就懂,TDD 是在釐清你的思緒的同時,又可以以終為始,確保你在 production code 的每一個動作都是為了滿足某個期待的情境。

    要戰 TDD,請不要去把 單元測試、整合測試捲進來,那是測試的顆粒度,那是測試的分類,TDD 從來都不是只能限於單元測試。

    要戰 TDD,請不要在那邊戰他是 bottom-up ,是直接從程式/class 的角度出發,事實上 TDD 既不是 bottom-up, 也不是 top-down, (書裡面就有講這件事咩),實務上的 TDD 結合倫敦派(GOOS)跟芝加哥派(Classic TDD),會更像 Outside-In 的進行方式,先定義好驗收情境,接著從最外部(也就是使用者看得到的部份)一路把依賴往另一邊的系統邊界推,直到推到系統以外的依賴資源(persistence 或 external API/service)

    ```
    註: ATDD by Example 中 ATDD by Example, Kent Beck 寫的序最後的一段話。

    Kent Beck:
    「就像我曾說過的,TDD的一個缺點是,它可能會退化為一種用來滿足開發人員需求的編程技能。某些開發人員從更廣泛的角度來看待TDD,輕易在他們測試的不同抽象級別間跳躍。然而在ATDD中不存在歧義,這是一種加強與非編程人員溝通的技術。我們之間良好的協作關係,以及作為這種關係基礎的溝通,能夠使軟件開發更有效率。採用ATDD是向著溝通更清晰這個目標邁進的重要一步,而此書是一本全面又平易近人的入門讀物。」
    ```

    要戰 TDD,請不要只關注在 test-frist,因為他只是用 test 來幫助你 think-first,不要邊寫邊想。然後不要過份依賴或相信你腦袋的能力,把你想好的東西具體化出來,最好可以被直接執行,最好除了你以外每個人執行出來的結果都會一樣(不管是對的,還是錯的)

    要戰 TDD, 請不要把論點放在見樹不見林,如果你有看 TDD by Example 的 Part 1, Part 2 那兩個加起來共 24 個章節,就知道一開始就得把當下想到的全貌紀錄在一個「紙本」的 backlog (所謂的紙本,只是要講這並不依賴於任何工具)

    而這個需求輪廓的全貌,會隨著你逐漸完成一部分一部分的情境,設計逐漸浮現後,而隨時跟著增減調整。

    但不代表 TDD 就是先想到一個測試案例,就直接先幹下去了,那根本是亂搞。

    以上這些,都還不是在列 TDD 的好處,而是針對那些從來沒搞懂 TDD 但又愛戰 TDD 的人一點提醒,你戰的很可能是「你誤解的 TDD」。

    TDD 還有許多實務上的用途,列上我在譯者序中的一小段:

    >> 測試驅動開發(Test-Driven Development, TDD)!一種以測試為開發輔助、以測試來描述需求情境、以測試來當作目標、以測試來表達期望、以測試來驗證疑問、以測試來實驗學習、以測試來溝通協作、以測試來協助設計高易用性 API 的「開發方法」。

    譯者序有開放給大家看,請見:https://tdd.best/book/tdd-by-example/

    拜託,要戰之前去看一下祖師爺 Kent Beck 對 TDD 的原始見解:https://www.tenlong.com.tw/products/9789864345618?list_name=srh

    如果你想正確的使用 TDD 來幫助你在實務上產生許多的價值,帶來許多的好處,尤其是需求釐清、持續重構、小步快跑的部份,最好理解的培訓課就在這:https://tdd.best/courses/classic-tdd-by-example-video-training/

    最後我想講一段話:
    TDD 從來都不該被導入到團隊中,但它是一種很好的自我鍛鍊與學習的方式,也是一種能用很低的成本來帶來很多好處的開發方法(見下方註腳),然而它也不是適用所有的情況,但它可以讓『完美』變成一個動詞,而非不變的形容詞。

    ```
    註:
    Kent Beck 在 DHH 靠腰:《TDD is Dead》 之後寫的一篇反串文:《RIP TDD》
    https://www.facebook.com/notes/1063422864115918/

    我幾年前的簡易翻譯,通常也是 TDD 可以幫助你解決的問題,如下:

    - Over-engineering (過度設計)
    - API feedback (改善API的設計與可用性)
    - Logic errors (想的跟寫的不一樣,寫的跟需求不一樣)
    - Documentation (寫跟維護文件是痛苦的)
    - Feeling overwhelmed (找不到切入點)
    - Separate interface from implementation thinking (抽象設計)
    - Agreement (確保已修正問題的證據)
    - Anxiety (改東壞西的擔心受怕)

    ```

    很久沒對 TDD 發表這種長篇大論了,因為不理解、不想理解、不同角度理解的人居多,能真的到各自的塔上用不同角度來看原義,以及實務上用它來幫助解決的問題有哪些的人,真的太少。

    大部分人只想針對這個詞彙來攻訐以博得流量跟吸引目光,而不是想著「我可以用它來幫助我什麼」

    問題跟需求是中性的,解決問題跟滿足需求的手段與方式有千萬種,不會只有一種,也不會有所謂的對錯,多點角度去了解不同的方法、方式,然後融會貫通,發揮綜效,在實務上用最少的成本與風險來產生最大的價值,這才是真正的目標。

    導入敏捷不該是目標,導入 TDD 也不該是目標,目標永遠都是在實務上產生價值、解決問題、滿足需求。

  • 物件導向程式設計書 在 91 敏捷開發之路 Facebook 的最佳貼文

    2021-03-28 10:12:33
    有 52 人按讚

    蠻多朋友擔心自己在上我的課時,會不會有基礎不夠扎實導致無法完全吸收的問題。

    這還是有可能的,例如對基本的 interface 與多型概念的不足,不知道如何分辨職責的內聚與封裝的概念。

    知不足是開始進步的起手勢,但總不能一直給自己基礎不足的理由而裹足不前。知道自己基礎不夠好,就來打基礎吧。強烈建議可以先參加 Skilltree 業界師資,實戰教學 Bill 的物件導向程式開發。

    我與 Bill 在教學跟技術上有很高頻率的交流,如果你覺得自學程式設計有些卡卡的,進度不夠快,那他的解說跟上課題目的設計,將可以助你一臂之力,師父領進門,接下來自己要繼續往下學習就會輕鬆很多。

  • 物件導向程式設計書 在 軟體開發學習資訊分享 Facebook 的最讚貼文

    2021-03-09 21:29:23
    有 28 人按讚

    限時免費中,coupon code在網頁中請自取

    這門課的講師有寫一本書 Automate the Boring Stuff with Python Programming ,這堂課的內容就是基於這本書錄製的,你可以在網上先看看免費的內容,或是到 Amazon 付費買電子書,想要看更多的動態展示就是參加這堂 Udemy 線上課程了。

    https://softnshare.com/automate/

  • 物件導向程式設計書 在 在地上滾的工程師 Nic Youtube 的最讚貼文

    2020-10-19 21:00:10

    對於設計模式的學習有多方派系持不同意見,但仔細去思考,會發現設計模式的存在是避免自己發明愚蠢的設計在已經常出現的問題上,在日新月異的科技進步下,隨著商業邏輯更加複雜,軟體工程師所遭遇到的問題也一次比一次還難

    Design Pattern 的存在是幫助思考,避免不必要的協作災難,只要能懂得這點並融會貫通,職業生涯中有更多的時間去學習不同的思考方式、軟體架構以及團隊管理

    成為真正的資深工程師道路上,Design Pattern 絕對是一門主修科目,你可以不完全使用,但卻不能不知道

    以下是學習 Design Pattern 的推薦資源,其中包含筆記、書籍和程式碼範例

    ✅ 我的部落格筆記(Ruby) https://blog.niclin.tw/2018/11/18/%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%89%87-solid-ruby-sample/
    ✅ 設計模式學習筆記 https://skyyen999.gitbooks.io/-study-design-pattern-in-java/content/
    ✅ 七天學會設計模式:設計模式也可以這樣學 https://www.books.com.tw/products/0010750585
    ✅ 大話設計模式 JAVA 版範例: https://github.com/skyyen999/bigTalkDesignPatternJava

    章節:
    00:00 算我拜託你了
    01:00 什麼是 Design Pattern
    02:25 學習 Design Pattern 的好處
    04:43 實際應用與學習方式
    07:34 導入工作

    喜歡影片的話!可以幫忙點個喜歡以及分享、訂閱唷!😘
    ━━━━━━━━━━━━━━━━
    ⭐ 蝦皮賣場: https://shopee.tw/bboyceo
    ⭐ instagram (生活日常): https://www.instagram.com/niclin_tw/
    ⭐ Facebook (資訊分享): https://www.facebook.com/niclin.dev
    ⭐ Blog (技術筆記): https://blog.niclin.tw
    ⭐ Linkedin (個人履歷): https://www.linkedin.com/in/nic-lin
    ⭐ Github: https://github.com/niclin
    ⭐ Podcast: https://anchor.fm/niclin
    ━━━━━━━━━━━━━━━━
    🌟 任何問題或合作邀約信箱: niclin0226@gmail.com

    #designpattern #前端 #後端

  • 物件導向程式設計書 在 Untyped 對啊我是工程師 Youtube 的最佳解答

    2020-01-25 21:00:10

    關於程式語言 -入門該學哪個程式語言?工程師都用什麼程式語言?最強程式語言是?| Which Programming Language to Learn First
    (ft. 立秦、蝦蝦)
    -
    學習程式設計,新手要學什麼程式語言?Python, Java, C++, JavaScript ... 程式語言種類那麼多,哪個程式語言最適合初學入門者?哪個程式語言最受歡迎最厲害最強大?工程師又都用什麼程式語言呢?對啊我是工程師是寫什麼程式語言的工程師?
    對啊我是工程師很常被問到這類問題,所以,這次會分享我對程式語言的介紹與看法,以及初學者如何選擇並學習程式語言,並分享學習程式設計前,要有的程式語言基本概念。釐清一些大家對程式語言常有的誤會,或許能讓你在學習的路上少一點困惑。

    這次更很榮幸的邀請到特別來賓,兩位厲害的工程師 一 立秦、蝦蝦,一起來跟大家分享他們對程式語言的喜好與看法。同樣是工程師,大家對程式語言的想法真的都不盡相同呢~

    希望大家看完能夠收穫滿滿,一起迎接嶄新的一年。新年快樂!
    -
    歡迎留言告訴我你的想法,或是你想認識的程式語言唷!
    每(隔週)週六晚上9點更新,請記得開啟YouTube🔔通知!
    -

    【上集連結】

    程式語言入門須知-上集 | 新手該學哪個程式語言?工程師都用什麼程式語言?最強程式語言是? | What you should know about programming languages
    [https://youtu.be/fcmXuZtsQ6Y]

    【愛屋及烏】
    Facebook 臉書粉專 [https://www.facebook.com/untyped/]

    【相關連結】
    Java 與 C++ 比較: [https://www.educba.com/c-plus-plus-vs-java/]
    -
    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.
    一個喜歡電腦科學邏輯推理,在科技圈努力為性別平等奮鬥的女工程師。
    -
    Music: [https://www.bensound.com](https://www.bensound.com/)

    #codingforbeginners #programminglanguages #程式語言

  • 物件導向程式設計書 在 吳老師教學部落格 Youtube 的最佳貼文

    2016-07-06 22:17:00

    文化JAVA物件導向程式設計2016_8(取得系統時間與格式化&簡化程式FOR迴圈匿名物件&Calendar&數值過濾器&計算計算年齡&單字測驗讀取CSV檔案與外匯讀取&外匯資料CSV)

    今天課程內容:

    01_證照102題如何取得系統時間與格式化
    02_如何取得系統時間與格式化與簡化程式FOR迴圈匿名物件
    03_將日期改為Calendar取得日期時間
    04_106數值過濾器解答(引入參數與例外事件處理)
    05_如何計算計算年齡精確到歲月日
    06_修改單字測驗為外部讀取CSV檔案與外匯讀取
    07_變化題外匯資料CSV檔匯入與輸出

    完整影音:
    https://www.youtube.com/playlist?list=PLCfL1sBZ2_SQavhBJUCjqX6rz4PvAiiFt

    教學論壇(之後課程會放論壇上課學員請自行加入):
    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類別 電腦證照

你可能也想看看

搜尋相關網站