SlideShare une entreprise Scribd logo
1  sur  80
Code Guidelines
(內部教材)
黃忠成
本課程的範圍
物件導向
設計準則
團隊程式碼
風格規範
具防衛性
程式規範
從語言層級開始
物件導向程式與程序導向程式
 程序導向程式語言
 以Function(函式)為基礎
 VB、Clipper、C
 物件導向程式語言
 C#、Java、VB.NET、Delphi
 兩者的差別
 程序導向由於以函式為基礎,當系統趨近龐大時會很難管理,最常見的就是命名衝突
 物件導向以物件為基礎,加上命名空間的區隔,所以適合大型系統的開發
 合格的物件導向程式
 撰寫物件導向程式必須遵循一些基本準則,否則很容易寫出類程序導向的程式
 在物件導向程式語言中的類程序導向程式碼很恐怖哦
 寫之前先思考,避免線性思考
程式語言演化史
第一課-命名空間 (Namespace)
 命名空間是C#最根源的區塊
 命名空間中可包含
 類別
 列舉
 委派
 結構
 每個命名空間都視為是獨立的
 因此,不同命名空間中可以有相同名稱的類別、列舉、委派、結構
不同命名空間,相同名稱
CS0001-使用目錄來區隔命名空間
重點
 當你在專案中建立目錄時,其命名空間會變成 rootfolder.<youfolder>
 適當的運用目錄來管理型別,可以使整個專案結構化,未來在Version Control上也
會比較容易操作
 8.3檔名已是過去式,專案名稱可以命名得更明顯易懂
 Microsoft.Customers.ManagerApp
CS0002-將可重複使用的部分抽離
 當某一個動作可能被重複使用一次以上的時候,應該將其抽出成為另一個類別或是函式
重點
 物件導向設計的中心思想就是重用
 重用會帶來
 可維護性,因為大家都是重用特定的函式或是流程,一旦有所變動,只須改特定的區塊即
可
 減少重複的程式碼
 易於進行單元測試
 以函式為測試單位
 以類別為測試單位
 物件化思考,避免線性思考
CS0003-類別設計是為了實現特定功能,不
要把一個以上的功能設計在單一類別裡
 類別
 描述執行某一功能的過程
 由過程分出階段
 將階段設計成函式,狀態設計成變數、屬性
 藉此賦予實現此功能外的彈性
一個例子
• CalculateTotalWithTax其實是可以被重用
• 而且含稅的計算不應是訂單的一部分, 她應該獨
立成一個類別被大家共用
• 這會帶來以下好處
• 單一性,只有一個地方計算稅額
• 可維護性,日後只要改這個類別就可以套用
到整個系統
修改後
類別設計要有明確的目標,例如User就是包
含操作User所需要的機制,不要設計出類似
Utility的類別,這會讓你走回程序導向思考
CS0004-少用ref 、out傳遞參數
 當你使用ref、out傳遞參數時,代表著把物件整個交給該函式,之後該物件的值將無
法預料
如果我需要傳回一個以上的值?
• ref與out不應該出現在非 Framework的設計中
• 此例傳回一個物件作為回傳值的設計又稱為Value Object
任何一個ref , out都是可以被除去的,
所以不要讓ref , out出現在你的系統中
CS0005-用例外來描述函式呼叫錯誤
 我們常用函式的回傳值來識別該函式是否執行成功
 但,不成功有很多種可能性
 資料庫連不上
 網路連不上
 記憶體不足
 ….
 一個例子
使用例外來描述錯誤
自訂例外
 系統內建的例外很多,但如果找不到合用的,你也可以自己設計例外類別
例外是一種告知錯誤詳細訊息的機制,
不要害怕它們
CS0006-變數宣告Scope由小至大思考
 區域變數能做到的,不提升為類別變數,類別變數能做到的,不提升為靜態變數
 當變數Scope越大時,代表著其影響力也越大,通常意味著改動其值必須更小心
 寫程式的都知道: 改了A壞了B,Scope控制不當有可能是原因之一
 謹慎管理變數的Scope,因為這是值得的
CS0007-函式Scope由小至大思考
 私有成員函式能做到的,不提升為公開
 類別應最小化其公開函式,這一方面是隱藏實作,另一方面是避免外界不當的使用
而導致功能運作不正常
 謹慎管理函式的Scope
一個例子
• IsAdult是要讓外面呼叫,所以是public
• CheckNameIsEmpty只有內部呼叫,
且不打算讓外不呼叫,所以是private
你該注意的事
 類別成員函式會變成public的情況
 讓外界對類別執行特定行為
 讓外界改變執行行為的細節
 這通常可以用屬性取代
 類別成員函式為private的情況
 輔助執行特定行為
 初始化動作
 結尾動作
 不要把成員變數設為public
Scope控制非常重要,但也很簡單,以
private為基礎往外想就對了
CS0008-當函式可以宣告成靜態時,就宣告
為靜態
 哪種函式會設計為靜態
 該函式不會呼叫其他成員函式
 該函式不會存取成員變數
 函式設計為靜態後的影響
 當由類別產生實體時,其物件所占用的記憶體是 成員變數+成員函式(virtual)(4 byte)
 當某函式成為靜態後,其將不會因為物件數量的增加而多占用4 byte(by object)
 其將只占用4byte(by class)
 靜態後,可以在沒有物件實體的狀態下由類別直接呼叫
 哪種函式不該設計為靜態
 存取成員變數
 存取屬性
一個例子
宣告為靜態通常會增加參數數目,在此
中間取得平衡點是一個需要思考的問題
CS0009-將整體系統共用變數部分抽出成為
靜態類別
 系統中常見一些共用變數,例如
 連線字串
 網址
 使用者設定
 將這些共用變數抽出成為靜態類別,利於管理
一個例子
重點
 請多使用屬性,因為有存取子,所以未來能操控的彈性較多
 例如
 想對設定動作做Log
 想對設定的來源做Log
 Demo Stack Trace
 調整或是將某些變數的設定忽略掉
CS0010-當函式內文超出一個畫面,代表著
它可以切成多個函式
 函式應該要奉行精簡、以單一流程為主,當一個函式內容超出一個畫面(800x600),
那麼就代表這個函式做了太多工作。
 解構的方式
 將多個流程切離
 將初始化動作切離
 將終止化動作切離
 將迴圈切離
CS0011-盡量不要使用縮寫字來命名類別及
函式
 類別、函式、變數沒有8個字的限制
 不要用縮寫字
 GetUserPwd
 GetOrderU
 不要斷字
 GetUserPassw
 GetOrderByOutp
 就跟寫文章一樣,請完整描述目的,如果字真的太長,善用Class/Namespace
CS0012-多用屬性,不要直接將類別成員暴
露在外
 簡單的說,不要把類別成員設成public
 C#的屬性有get/set,也有get only
 可以get only,就不要讓他可以set
 最小化暴露範圍,是防衛性設計的第一步
Property get and set only demo
CS0013-當物件需要先行設定多個屬性方能
運作時,將這些屬性變成建構子參數
 物件應該在建立後就要處於可運作狀態(意思是指對其函式呼叫或是屬性變動都不會
導致崩潰),如果違反這個原則,那麼這個設計就是錯誤的
正確的例子
CS0014-屬性設值的順序不應該影響物件的
行為
 屬性通常用來作為使用者對物件行為調整的途徑
 但其屬性設值不應該有順序性,一旦出現順序性,就代表著設計不當
修正後
CS0015-命名請遵照Pascal法則
 函式、型別第一個字為大寫
 變數第一個字為小寫
 例如
 LoginControl vs loginControl
 GetUserPassword vs getUserPassword
 name vs Name
 InsertItemToCache vs insertitemToCach
CS0016-不要使用神秘常數
 程式中不應該直接出現奇妙的數字
給予神秘數字ㄧ個有意義的名稱
CS0017-充分了解Array與List的差別
 Array
 固定數量陣列
 無法動態調整大小
 List
 非固定數量陣列
 可以動態調整大小
 對於多數系統而言,List的用量比Array更多
何時使用Array
 你需要把陣列傳入某個函式,但不希望該函式改變陣列的數量
 改變數量將會影響後續程式執行結果
多使用定型List
 C#支援泛型,也提供泛型的List類別
 多使用泛型的List類別,是防衛性設計的一部分
CS0018-避免巢狀迴圈發生
 使用函式來取代
修正後
多數情況下,當發現函式太長時,都可
以用這種方法切出副函式
副函式對效能的影響微乎其微,不要因
為效能而不使用副函式
CS0019-不要將多行指令寫在一行
 這不會讓你的程式看起來更酷好嗎?
CS0020-不要使用new 來隱藏父類別的成員
函式
 所有物件導向程式語言都有隱藏或覆蓋類別成員函式的技巧
 但在使用這些技巧時,需要了解幾件事
 除了Objective-C之外,隱藏及覆蓋的範圍僅止於宣告處,也就是你不能改變既定類別中既
定成員函式的行為
 使用new會導致使用端完全無法理解該函式行為
一個例子
可以猜出下面的結果嗎?
new很可怕,99.99999%的情況下都不
該使用
CS0021-不要吞掉例外
 例外是系統出現問題的最後遺言,不吞掉例外是最基本的防衛型設計
問題在哪裡?
 是的,這是一個看似正常的設計,但只要傳錯參數,就會有一個例外被吃掉
 正確的設計是,即使你知道該例外不會有影響,也應該在吞掉例外前紀錄他們
 紀錄的訊息越詳細,對於日後的除錯會更方便
修正後
CS0022-當存取來自呼叫者的變數時,永遠
要處理null的狀態
 對於傳入的參數,永遠抱持懷疑的態度,至少必須做好使用者傳入Null的準備
CS0023-物件狀態修改時,應設計通知機制
利用事件來回報狀態的變更,讓需要對狀態
變更的程式碼有個通道
CS0025-明確的思考繼承體系
 繼承是用來描述同一個體系下的類別階層,因為是同一體系,所以自然有很多函式
是需要被共用的。
 但是,如果分類非在同一個體系,那麼你就不該運用繼承
一個例子
CS0026-善用using
 在.NET Framework中,物件的記憶體是交由GC回收的.
 但GC啟動的時間不定,所以程式設計師應養成協助GC釋放記憶體的習慣
 using是一種可以確保物件已經使用完畢,且提早讓GC得知這個情況的機制
CS0027-當using出現過多的巢狀時
 過多的using會造成巢狀效應,讓程式碼看起來更難懂,且難以維護
修改後
 C# 的using有一個特色,那就是當using的目標型別都是同一個的時候,就可以結合
在一起
CS0028-嚴格管控匿名函式的出現機率
 匿名函式很方便,但是其會影響可管理性,還有可重用性
 在可能的情況下,盡量不要使用匿名函式。
修改後
匿名函式的處理
Check if Sub Function exists
Create Sub Function
Pack local variable to value object
匿名函式的缺點
 無法被重用
 會額外付出value object的記憶體
 提升程式的可讀性,但降低程式的結構性
CS0029-使用Unit Testing
 在撰寫程式期間,單元測試是很重要的一環
 奉行單元測試可以
 以最簡單,快速的方式驗證程式的正確性
 自動化驗證系統的正確性
 自動化驗證系統的穩固性
 單元測試的最大癥結點
 政治大於習慣
 時程不應是不執行單元測試原則的藉口
單元測試的大致重點
 目的是為了測試程式的正確性
 函式
 類別
 物件狀態
 大致可以分成幾個步驟
 模擬環境
 測試
 驗證
使用Visual Studio 的Unit Testing工具
Demo
TDD
Test-driven development
何謂TDD
 全名為 Test-driven development (TDD)
 原則就是以可測試為前提撰寫應用程式
 幾個要點
 在撰寫函式前先思考該如何測試該函式
 接著撰寫測試程式碼(此時還沒開始寫)
 接著執行Unit Testing(Red)
 開始撰寫函式
 執行Unit Testing(Green)
 反覆進行直到函式完成
 此時測試程式應該也完成了
TDD的設計準則
 Top-down designing
 先寫使用情境
 Red
 逐一補上內容
 Green->Red->Green
 重構
 Green->Red->Green
TDD帶來什麼
 迫使程式設計師由使用角度思考
 早期發現設計不當的問題
 參數數目
 流程
 早期發現環境影響因素
TDD適合用在哪裡?
 訓練撰寫系統的能力
 訓練思考全面化的能力
 避免過多或過少的參數
 提早在實作前發現設計上的錯誤
 程式設計師都應該學會TDD的精神,這樣才能先思考、後寫程式

Contenu connexe

Tendances

寝プログラミングのススメ
寝プログラミングのススメ寝プログラミングのススメ
寝プログラミングのススメ
Yoshitaka Kawashima
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
 
專為程式人寫的神經網路導論 (以反傳遞演算法為入門磚)
專為程式人寫的神經網路導論  (以反傳遞演算法為入門磚) 專為程式人寫的神經網路導論  (以反傳遞演算法為入門磚)
專為程式人寫的神經網路導論 (以反傳遞演算法為入門磚)
鍾誠 陳鍾誠
 

Tendances (20)

DiI/DIコンテナを一から学んでみた
DiI/DIコンテナを一から学んでみたDiI/DIコンテナを一から学んでみた
DiI/DIコンテナを一から学んでみた
 
設計してますか?
設計してますか?設計してますか?
設計してますか?
 
CleanArchitecture 第4部 「コンポーネントの原則」
CleanArchitecture 第4部 「コンポーネントの原則」CleanArchitecture 第4部 「コンポーネントの原則」
CleanArchitecture 第4部 「コンポーネントの原則」
 
寝プログラミングのススメ
寝プログラミングのススメ寝プログラミングのススメ
寝プログラミングのススメ
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
 
iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
Java8でRDBMS作ったよ
Java8でRDBMS作ったよJava8でRDBMS作ったよ
Java8でRDBMS作ったよ
 
量子コンピュータのエミュレータ上でいろんな量子計算してみた
量子コンピュータのエミュレータ上でいろんな量子計算してみた量子コンピュータのエミュレータ上でいろんな量子計算してみた
量子コンピュータのエミュレータ上でいろんな量子計算してみた
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!
 
專為程式人寫的神經網路導論 (以反傳遞演算法為入門磚)
專為程式人寫的神經網路導論  (以反傳遞演算法為入門磚) 專為程式人寫的神經網路導論  (以反傳遞演算法為入門磚)
專為程式人寫的神經網路導論 (以反傳遞演算法為入門磚)
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
用十分鐘《讓你的專案一開始就搞砸》!
用十分鐘《讓你的專案一開始就搞砸》!用十分鐘《讓你的專案一開始就搞砸》!
用十分鐘《讓你的專案一開始就搞砸》!
 
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
 
マジックビーンズ
マジックビーンズマジックビーンズ
マジックビーンズ
 

Similaire à Code guidelines

前端基础知识回顾
前端基础知识回顾前端基础知识回顾
前端基础知识回顾
Wu tianhao
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
Allen Lsy
 
An introduce to n hibernate (part 1) pub
An introduce to n hibernate (part 1) pubAn introduce to n hibernate (part 1) pub
An introduce to n hibernate (part 1) pub
jiangxu
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
lydiafly
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
yang alex
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
evercislide
 
3 hibernate映射元素和类型
3 hibernate映射元素和类型3 hibernate映射元素和类型
3 hibernate映射元素和类型
Zelin Wang
 
软件工程 第十一章
软件工程 第十一章软件工程 第十一章
软件工程 第十一章
浒 刘
 
Struts Mitac(1)
Struts Mitac(1)Struts Mitac(1)
Struts Mitac(1)
wangjiaz
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章
浒 刘
 

Similaire à Code guidelines (20)

前端基础知识回顾
前端基础知识回顾前端基础知识回顾
前端基础知识回顾
 
Hibernate
HibernateHibernate
Hibernate
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
 
Entity Framework實戰
Entity Framework實戰Entity Framework實戰
Entity Framework實戰
 
An introduce to n hibernate (part 1) pub
An introduce to n hibernate (part 1) pubAn introduce to n hibernate (part 1) pub
An introduce to n hibernate (part 1) pub
 
Javascript面向对象
Javascript面向对象Javascript面向对象
Javascript面向对象
 
ASP.Net MVC Framework
ASP.Net MVC FrameworkASP.Net MVC Framework
ASP.Net MVC Framework
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
Javascript进阶编程
Javascript进阶编程Javascript进阶编程
Javascript进阶编程
 
3 hibernate映射元素和类型
3 hibernate映射元素和类型3 hibernate映射元素和类型
3 hibernate映射元素和类型
 
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
 
软件工程 第十一章
软件工程 第十一章软件工程 第十一章
软件工程 第十一章
 
Struts Mitac(1)
Struts Mitac(1)Struts Mitac(1)
Struts Mitac(1)
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章
 

Plus de Jeffray Huang (6)

Java in azure dev ops
Java in azure dev opsJava in azure dev ops
Java in azure dev ops
 
Mobile Web 2.0
Mobile Web 2.0Mobile Web 2.0
Mobile Web 2.0
 
Windows 8 LOB App Deployment
Windows 8 LOB App DeploymentWindows 8 LOB App Deployment
Windows 8 LOB App Deployment
 
Mobile services (Tech Days 2013)
Mobile services (Tech Days 2013)Mobile services (Tech Days 2013)
Mobile services (Tech Days 2013)
 
Windows Azure Developer Day - WAMS
Windows Azure Developer Day - WAMSWindows Azure Developer Day - WAMS
Windows Azure Developer Day - WAMS
 
Java and windows azure cloud service
Java and windows azure cloud serviceJava and windows azure cloud service
Java and windows azure cloud service
 

Dernier

10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
PUAXINYEEMoe
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
PUAXINYEEMoe
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
michaelell902
 

Dernier (9)

啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
 
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
 
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
 
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade SixMath Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
 

Code guidelines

Notes de l'éditeur

  1. 線性思考 A客戶轉帳了100塊到B客戶 物件式思考 1. A客戶透過轉帳系統轉帳了100塊到B客戶 2. A客戶透過A帳戶經由轉帳系統轉帳了100塊到B客戶的B帳戶 由思考提取物件 客戶 帳戶 轉帳系統
  2. 轉帳系統 A客戶透過A帳戶經由轉帳系統轉帳100塊到B客戶的A帳戶 轉帳系統 -> 物件 Source 客戶 ->屬性 Dest 客戶->屬性 金額 ->屬性 轉帳 ->函式
  3. Utility類別 設定解析度 設定COM Port 設定 xxxx
  4. Throw 會拋出例外, 此時函式執行會終止
  5. Try to demo insert command, check duplicate first.