我的web應用程序有一個解析URL參數的方法。試圖避免應用程序參數的緊密耦合
...
layerName = HtmlPage.Document.QueryString["Layer"] . . . ;
...
一個部門在我們公司有哪些網址爲這個應用程序是很難改變的原因不明,以我的參數列表。 他們可能會使用這樣的URL。 .../Default.aspx的?服務=韋爾斯&層= ActiveWells &查詢= XYZ IN( '1234567890 ...')
最近,有些事情改變類似於以下。 「ActiveWells」圖層名稱更改爲「曲面參與井」。 「BoreStick」圖層名稱更改爲「WellBores」。 因此,該部門的預設URL參數不再有效。
我的經理告訴我添加的代碼會將「ActiveWells」的任何實例更改爲諸如「Surface Participation Wells」之類的代碼。 經理然後說,以後當具有URL參數的部門將它們全部更改爲新名稱時,我們可以刪除該代碼。
我不確切地知道「緊密耦合」是什麼;但我知道這很糟糕,這聽起來就是一個例子。 這對我來說聽起來像是一個壞主意,添加代碼的目的是暫時保留它並稍後刪除它,因爲代碼可能永遠不會被刪除並變得僵化。
但我跟着我的命令,我加入這樣的代碼:
layerName = NameConverter.LayerNameChange(layerName);
有靜態LayerNameChange方法的switch語句。
從現在開始的幾個月或幾年內,負責此應用程序的開發人員應該知道進來並在其他部門完成更改所有預設的URL參數時將其刪除。
我想類似這樣的另一個之情況是,如果一個控制檯或基於Windows的應用程序有它期待的
Main(string[] args){...}
有沒有更好的方式來這樣的參數?
編輯:
如果不是我上面所述,我做了什麼樣的東西低於這個僞代碼。
private void MethodToParseURL_Parameters(Func<string, string> nameReplace)
{
. . .
layerName = nameReplace(layerName);
. . .
}
調用方法會有某種形式的,
MethodToParseURL_Parameters(new Func<string, string>(NameConverter.LayerNameChange));
爲什麼要解析方法需要了解NameConverter類的存在?
這就是我問自己。
畢竟,這不是我看到的解析URL參數的責任的一部分。
我不知道我是否過度這個。我對這種發展水平感到陌生。 我知道這個問題已經得到解答,但對於這個我的新想法的任何進一步的評論將不勝感激。
您已開始過度設計此解決方案。到目前爲止,你做得很好。我會更關注SQL注入,因爲這不僅僅需要URL解析來保證它安全。 –