Task#1–1[Code Review]

影山小麥機
Jul 19, 2021

前言

本篇主要是紀錄一些我在第一次Task中,mentor看過我寫code的方式,給予我的建議。可以回去上一章看我的小任務。

我大致上會分成幾個層面來劃分:

  1. 功能、區塊的劃分
  2. 需要補足的基本知識

正文

原本我主要編輯的區塊都是在ViewController,不過mentor給的建議是:這樣會造成Massive View Controller,也就是說,ViewController內部太多的東西,這樣在閱讀的時候要一直找來找去,對於寫code的可讀性、排版會很凌亂。

所以,依照分類,mentor大概會這麼做:

把ViewController的內容拆分出MyView、ViewController

MyView裡面裝的是影響UI畫面變化的實質內容,如元件:

下面則是元件的一些實質內容的編輯:

然後,自動佈局:

基本上,關於畫面的東西都被統包在這個內容之中。

於是,ViewController的內容被切成兩半後,剩下的則是:

屬性:

生命週期的變化,以下直接把myView的內容直接引進到view裡面,並在loadView這個方法下面覆寫

然後在下一個覆寫方法中,置入另外兩個方法:

第一個方法是導覽列的,第二個則是滑桿、輸入框的監聽事件。

以下部分則是監聽事件的實質內容:

最後,才是一個擴展,把ViewController的class擴展一個協議(Protocol):

這部分因為呼叫鍵盤的時候需要用到UITextFieldDelegate這個協議處理,所以才需要這樣呼叫。

以上大致做了一些重整的部分,接下來要敘述一下一些知識重點。

  1. 可以把會影響畫面的東西都放在同一個頁面Swift檔裡面
  2. 影響畫面的動作放在一個畫面裡
  3. 觸發事件放在ViewController裡面

一些知識點需要補足:

  • StackView是什麼?
  • Required init的功能是什麼
  • didSet的寫法要練習,觀念要稍微注意一下
  • MVC架構在做些什麼?
  • loadView()、viewDidload()的用法實際上是什麼。

這些從Task1延伸出的知識,大概會在這幾天稍微做一些補充,接著再從Navigation、TabBar繼續往下讀。

以下,也會附上原本的程式碼,以及經過mentor code review的程式碼。

如果有興趣可以兩相比較:

Task1

https://github.com/terminal201467/SomeTasks/tree/main/Task1

Task(After Code Review)

https://github.com/terminal201467/SomeTasks/tree/main/Task1-20210719%EF%BC%88Code%20Review%EF%BC%89

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

影山小麥機
影山小麥機

Written by 影山小麥機

本職為Mobile工程師,熱愛分享視野,也樂意站在ChatGPT的肩膀上。訂閱小麥機,收割技術、職涯、人生的難題。

No responses yet

Write a response