iT邦幫忙

c#相關文章
共有 1435 則文章
鐵人賽 Software Development DAY 25

技術 Replace Type Code with Class 的重構

Replace Type Code with Class 簡介 原因: 欄位使用int、string等的類型, 無法保護它不受不正確的賦值和非法的等同性比較解法...

鐵人賽 Software Development DAY 24

技術 Introduce Null Object 的重構

Introduce Null Object 簡介 程式碼到處是處理null欄位或變數的重複邏輯. 重構前範例 假設有個JobRunner類別, 用來執行特定任務...

鐵人賽 Software Development DAY 23

技術 實作Value Type 為 Immutable物件

Value Type VS Reference Type C#中, int, float, double, struct等為value type,而由class...

鐵人賽 Software Development DAY 22

技術 Combinatorial explosion 的重構

Combinatorial explosion 簡介 有好幾段程式碼, 根據不同參數的組合而幾乎都在做一樣的事情. 重構前範例 假設有個禮品店員, 根據包裝物的...

鐵人賽 Software Development DAY 21

技術 Introduce Parameter Object 的重構

Introduce Parameter Object 簡介 有函數有太多的參數時,可以將這些參數包裝成parameter object. 重構前範例 假設有個出...

鐵人賽 Software Development DAY 20

技術 Removing Shotgun Surgery 的重構

Removing Shotgun Surgery 簡介 當異動一項功能, 導致系統其他的程式碼也得異動.稱為Shotgun surgery是一種比喻, 霰彈槍發...

鐵人賽 Software Development DAY 18

技術 Cohesion 內聚

Low cohesion的說明 一個類別或模組的職責太多, 或者它的函數之間沒有緊密的關係 低內聚的類別群, 會讓開發者難以理解與維護 因為它們執行不相關的...

鐵人賽 Software Development DAY 15

技術 使用 nameof 的重構

在使用nameof之前 在實作需要class, property與method名稱的功能時, 程式碼各處寫了hardcode的字串來表示這些名稱.但總會有寫錯的...

鐵人賽 Software Development DAY 14

技術 Replace Error Code with Exception 的重構

Replace Error Code with Exception 簡介 假如有個函數, 它回傳特殊值來代表某種錯誤...? 重構前範例 假設有個購物車系統,...

鐵人賽 Software Development DAY 13

技術 Replace Exception with Test 的重構

Replace Exception with Test 簡介 假如有段邏輯, 只需要做個簡單的測試(判斷)即可完成功能, 但卻有例外狀況的處理. 重構前範例 假...

鐵人賽 Software Development DAY 12

技術 保持邏輯的局部性

保持邏輯的局部性 簡介 假如有個複雜邏輯的演算法, 需要重構成一個函數, 但是這邏輯只會用在一個地方. 重構範例 假如有個手機遊戲, 根據會員的等級, 所消費的...

鐵人賽 Software Development DAY 11

技術 外覆(Wrap) 方法與類別

外覆方法 重構前 假如有個類別Employee, 用來處理支付薪水的函數Pay() public class Employee { public voi...

鐵人賽 Software Development DAY 10

技術 新生(Sprout) 方法與類別

新生方法 重構前 假如有個類別TransactionGate, 用來處理每個交易的日期設定, 並賦予manager做處理. public class Trans...

鐵人賽 Software Development DAY 9

技術 程式接縫 Seam

程式接縫 Seam 簡介 定義: 程式碼裡面特殊的一個點, 在這些點上不需做任何更改即可達到改變程式行為的目的 如何讓一個程式碼做改變呢? 假設原有個fun...

鐵人賽 Software Development DAY 8

技術 Replace Constructor with Creation Method 的重構

Replace Constructor with Creation Method 簡介 假如有個類別, 它有很多的建構函數, 對使用者來說, 會混淆何時該呼叫哪...

鐵人賽 Software Development DAY 7

技術 Replace Method with Method Object 的重構

Replace Method with Method Object 簡介 假如有個很長的函數, 有很多的區域變數且交織在一起, 難以用Extract Metho...

鐵人賽 Software Development DAY 6

技術 Breaking Yo-Yo Hierarchies 的重構

Breaking Yo-Yo Hierarchies 簡介 假如你在尋找一個方法的具體實作, 必須在這方法的類別階層裡上上下下尋找.這種階層稱為Yo-Yo Hi...

鐵人賽 Software Development DAY 5

技術 Replace Nested Conditional with Guard Clauses 的重構

Replace Nested Conditional with Guard Clauses 簡介 假如你有一組巢狀式條件, 且很難去了解正常的程式碼執行流程.此...

鐵人賽 Software Development DAY 4

技術 Feature envy 的重構

Feature envy 簡介 當有個方法,他處理眾多的欄位、函數來自於別的class, 這方法稱之為feature envy. 重構前範例 假設有位富人, 聘...

鐵人賽 Software Development DAY 3

技術 Data clump的重構

Data clump 簡介 有些欄位會一起出現在不同的class與參數列表.當一個系統的各處程式碼常出現這些欄位且形影不離, 勢必得思考他們與類別或參數列表的關...

鐵人賽 Software Development DAY 2

技術 Conditional Complexity的重構

Conditional Complexity 簡介 在程式碼區塊使用不同的冗長的if/else/switch判斷條件, 該函數的複雜度越來越大. 重構前範例 假...

鐵人賽 Software Development DAY 1

技術 Code smells簡介與Boolean Blindness的重構

什麼是Code smells? 簡單來說, 是指在軟體開發過程中, 描述不良的程式設計或實作所擁有的常見特徵. 這些特徵會導致程式碼難以了解、維護或擴展. 有哪...

技術 [資料救援]不小心手殘把本地原始碼跟gitServer原始碼都砍了

當作紀錄也分享給各位也手殘的人事情是這樣的,某天小弟我想把專案放上git server控管於是就先傳上去server,然後把本地的砍掉(因為歸檔了)然後去ser...

技術 [ASPX] 用C#呼叫ReportServer的報表 並下載檔案(可指定位置和檔名)

原使用http://127.0.0.1/ReportServer?/folder_name/report_name&dt=20240730&rs...

技術 [C#] Remove Element 解法

Example 1: Input: nums = [3,2,2,3], val = 3Output: 2, nums = [2,2,,] Example 2:...

技術 [C#] Palindrome Number 解法

Example 1: Input: x = 121Output: trueExplanation: 121 reads as 121 from left to...

技術 [C#] Sort an Array 解法

Example 1: Input: nums = [5,2,3,1]Output: [1,2,3,5]Explanation: After sorting th...

技術 [C#] 反轉陣列解法

Example 1:Input: head = [1,2,3,4,5]Output: [5,4,3,2,1] Input: head = [1,2]Output...

技術 [C#] 兩數之和解法

Example 1: Input: nums = [2,7,11,15], target = 9Output: [0,1]Explanation: Becaus...

技術 [C#] 二分搜尋框架解法

Example 1:Input: nums = [-1,0,3,5,9,12], target = 9Output: 4Explanation: 9 exist...