Ryan

不務正業 全端 開發記事

S.O.L.I.D 物件導向設計原則 - ISP (Interface Segregation Principle)

解釋 The interface-segregation principle (ISP) states that no client should be forced to depend on methods it does not use. 意思就是說一個類別不應該被強迫實作一個它不需要的方法。 其實換句話說是限制你不要過度膨脹介面中定義的方法,盡量是能夠滿足使用的情境即可,別想要把全......

如何在 FluentValidation 的 Validator 中注入自訂的 Service

緣起 最近在工作上使用了 FluentValidation 套件幫助我做比較彈性化的模型驗證,不過在自訂模型驗證的時,需要借助其他已經定義好的 Service 來取得一些額外的資訊,剛好專案裡面使用到了 Autofac 作為 DI 的容器。 這篇文章會展示如何在 Validator 中注入其他 Service。 環境 Visual Studio 2017 ASP.NET MVC 5 專案 ......

S.O.L.I.D 物件導向設計原則 - LSP (Liskov Substitution Principle)

Subtypes must be substitutable for their base types. (出自 Robert C. Martin aka Uncle Bob) 翻譯:基底類別應該要能夠被他的衍生類別給替代而不影響原本的功能 在今天的這個主題裡面我將要用實際例子來說明何謂 LSP 原則,也就是 里氏替換原則 經典範例 矩形 v.s. 正方形 在數學中我們可以知道 正方形 ......

S.O.L.I.D 物件導向設計原則 - OCP (Open-Closed Principle)

對修改封閉,對擴充開放 接下來講到第二個物件導向的設計原則 OCP 或稱為 開閉原則,以往我們在幫系統加上 Log 的時候,會有檔案類型的Log、資料庫類型Log、甚至只是單純在Debug時呈現在Console的Log。 這些都是儲存 Log 的方式,可是我們要怎麼樣在程式裡面完成這件事情,以下請看第一個例子 第一個例子 123456789101112public class Logge......

S.O.L.I.D 物件導向設計原則 - SRP (Single Responsibility Principle)

我很不會說話,但是我很實在 前言 第一次寫到這個物件導向設計原則的主題,我想到的是上面那一句廣告的台詞,因為 S.O.L.I.D 原則本身光看字面你可能還無法了解他代表的意義,最好的方式應該是將這幾個原則實務的應用到專案上面,你就能夠感覺到 SOLID 原則 實在 的地方。 首先我們討論到單一職責原則,以下會使用比較貼近生活的例子來讓大家有一點感覺。 SRP (Single Respon......

如何在 Visual Studio Team Service 設定自動建置及佈署

前言 還記得以前在進行專案的時候,開發到一個段落客戶會要求看目前開發的狀況,我們通常都會手動的去做建置以及佈署的動作,這樣的動作對各位來說一天做個三次五次還可以,不過只要你一天需要做個二十幾次,你可能就會覺得很浪費時間。 今天這篇的主題就是帶著大家怎麼樣透過 Visual Studio Team Service (aka VSTS) 來幫助我們做到自動建置以及自動部署,讓各位的生命浪費在美好......

控制反轉(IoC) & 相依性注入(DI)

前言 記得幾年以前還在當小小碼農的時候,曾經無數次為了公司趕上線寫過類似這樣的程式 Television.cs 1234567891011public class Television{ public void Open() { Console.WriteLine("電視機打開了"); } public void Close() { C......

決定搬家來 github.io

緣起 從 Google 提供的 Blogger 開始的第一篇文章起也已經過了七年,斷斷續續的有在新增內容,但今年還沒產出任何文章,真要追溯原因找藉口,只能說傳統的所見及所得編輯器對於編輯文章來說,真的有點麻煩。 寫一篇文章必定是蒐集各種素材及背景知識後再開始把文章內容填滿,所見及所得編輯器雖然能夠提供方便的圖床,但身為一個碼農,還是覺得 Markdown 是我畢生最愛,至少它是一個標準,將來......