簡體   English   中英

在這種情況下最好的做法是什么?

[英]What's best practice in this situation?

我想寫一個小的asp.net網頁,通過綁定到轉發器來顯示一組對象。

基本上我創建的類,我們稱之為'Test',有一個整數數據類型的price屬性(忽略使用這種類型的限制,我只是以它為例)。 但是,我想格式化此屬性,以便顯示貨幣和正確的小數位等。

最好的做法是在類中返回一個返回對象的格式化字符串的函數,或者最好在我的Web表單的后端有一個函數來操作對象並返回格式化的字符串?

我之前聽說過一個課程應該包含它的所有相關功能,但我也聽說過應該在我的N層應用程序的“表示層”中保存。

在我的情況下,最好的方法是什么? (如果我沒有足夠清楚地解釋這一點,我會道歉!)

謝謝!

在我看來,從OO的角度來看,這兩個選項都是有效的。

  • 由於價值一個價格(恰好有錯誤的數據類型),因此將格式放入數據類是有意義的。 它不是特定於Web界面的東西,如果您開發了不同類型的用戶界面,則很可能再次需要此格式。

  • 另一方面,這是一個演示問題,因此將它放入表示層也是有意義的。

對於一般的OOP內容,該對象不應暴露實現細節。 我選擇將其解釋為“盡可能避免設置者和吸氣劑”。

在您的問題的上下文中,我建議您使用getPriceDisplay()方法返回包含格式化價格的字符串。

格式的實際實現隱藏在實現細節中。 您可以提供用於格式化,使用某些后端調用或其他內容的通用函數。 這些細節應該對“測試”對象的消費者沒有任何影響。

雖然它不是OOP方法,但在我看來,這是擴展方法的好時機。 稱之為.ToCurrency() ,其格式為貨幣...如果需要,可以從Web.Config文件中獲取。

編輯

為了詳細說明,我只需要在擴展方法中調用.ToString("your-format") (當然這對於你的特定問題可能就像.ToString("C")一樣簡單)。 這允許您在一個位置更改整個UI中的格式。 我發現這在處理Web應用程序中的DateTime格式時非常有用。

不會.ToString("C"); 做這個工作? 這將是我想象的表示層。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM