由Code First的觀點思考Message Signature與Principle of least privilege
原本預計傳入網址之後,再確認網頁文件的編碼,所以運用Code First建立一個Model Class,包含Id、Title、Url與SourceTypeId,傳回值是IEnumerable<KeyValuePair<string,int>,傳入的參數則是KeyValuePair<string,int>,string與int分別是Url與Id。
但是之後變更設計,採取事先自動確認網頁文件的編碼,並且儲存在資料庫中,所以Code First建立的Model Class新增一個Encoding欄位,用以儲存文件編碼,於是之前使用的Message Signature必須修改成為傳回值是IEnumerable<Source>,傳入的參數是source,物件source的類別就是Model Class。
倘若一開始就直接使用Source類別取代KeyValuePair類別,將可以大幅縮短變更設計衍生的程式碼修改的時間,由此可見,倘若欲同時兼顧開發時程與Principle of least privilege,可以直接先傳入Model Class,待需求不再變更,再思考如何修改Message Signature以符合Principle of least privilege。