C#入門:如何合理制定方法參數-上

来源:https://www.cnblogs.com/kevin-Y/archive/2023/10/27/17792071.html
-Advertisement-
Play Games

最近玩《星露穀物語》上癮,本來是看著個休閑游戲,現在玩成修仙游戲了,上百個小時渾身是肝,中午午休習慣都強行給改了。 雖然挺有意思,但是太肝了,入坑前請謹慎。補充一下,這個游戲應該是基於 XNA/MonoGame 寫的。 這個游戲在喪失焦點的時候會自動暫停,無法自動推進,我覺得效率太低了,為了齊先生的 ...


1、利用面向對象的原則,將我們面對的功能拆分出相關對象

2、相同功能只應出現在一個類中。

3、相似功能儘量提取其公共部分

總的目標簡單來說就是:精減代碼量。

我們以一個動態條件查詢界面來說明一下上面幾點

 這是一個病案查詢功能,左則的列表是所有可供選擇的欄位,中間是用戶要求查詢的欄位,右側的某一個查詢欄位的條件。

組織這個界面功能要用到哪幾個類呢?

結果不是唯一的,每個人都可以有自己的想法。但我認為,組織一個更多人容易理解的方式應該是我們的目標。

首先浮現我們腦子的,應該是兩個對象:所有的欄位欄位查詢範圍

研究一下所有欄位的規則,更多時候應該跟客戶面對面的聊。我們發現部分欄位使用相同的查詢範圍錄入界面。
所以這裡似乎隱藏了一個欄位類型。就是某一類的欄位的行為是一致的,界面錄入、條件生成等行為是一致的。

欄位查詢範圍、欄位類型都很容易讓人想到這兩個是欄位的屬性,而不是構造主要元素的功能對象。

是的,從名字來看就很容易讓人迷惑。但如果我將名字換成“查詢範圍”、“行為控制器”,你可能會明白我的用意。

 

三個對象:欄位、查詢範圍、行為控制器

左側顯示就是所有“欄位”,中午顯示的是所有的“查詢範圍”,行為控制器必然是一個介面,讓主程式可以優雅的處理所有類型的欄位。

 上圖是中間查詢範圍選中事件的代碼,這個主程式就能應對N種欄位的顯示。

 

本文只發佈在博客園,未經同意請勿轉載!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • BeautifulSoup庫用於從HTML或XML文件中提取數據。它可以自動將複雜的HTML文檔轉換為樹形結構,並提供簡單的方法來搜索文檔中的節點,使得我們可以輕鬆地遍歷和修改HTML文檔的內容。廣泛用於Web爬蟲和數據抽取應用程式中。 ...
  • `Shiro`許可權框架認證失敗預設是重定向頁面的,這對於前後端分離的項目及其不友好,可能會造成請求404的問題。現在我們自定義過濾器實現認證失敗返回json數據。 ...
  • 1 引言 小團隊一般 10 人左右,其中常常是技術最牛的人做架構師(或TL)。所以,架構師在廣大碼農中的占比大概平均不到 10%。而架構師也可以分為初級、中級、高級三檔,江湖上真正高水平的軟體架構師就更少了。 所以,大部分(超過九成的)碼農幹上許多年,還是做不了架構師,這是什麼原因造成的呢? 2 說 ...
  • 我們都知道java中,如果char類型和int類型做加減法,那麼char類型會被精度提升至int類型然後參與運算,返回的也是int類型的數據。 那麼如果表達式中參與運算的均為char類型,那麼表達式返回的類型是什麼呢? 'A' - 'a' 經過簡單測試,是int類型。 char c = 'w'; s ...
  • 雷達圖(Radar Chart),也被稱為蛛網圖或星型圖,是一種用於可視化多個變數之間關係的圖表形式。雷達圖是一種顯示多變數數據的圖形方法。通常從同一中心點開始等角度間隔地射出三個以上的軸,每個軸代表一個定量變數,各軸上的點依次連接成線或幾何圖形。 雷達圖可以用來在變數間進行對比,或者查看變數中有沒 ...
  • 不想裝golang,不想裝IDE,還想有個流暢的運行環境,最重要的是一分錢都不想花,嗯嗯,GitHub雲開發環境全部滿足你,一切操作盡在本文 ...
  • 什麼是快捷代碼段:例如: 只需要輸入mst後按一下TAB就會自動生成代碼memset(str, 0, sizeof(str));,只需要輸入Pow就可以自動生成一個快速冪函數等等,非常方便快捷,一定程度提高了編寫代碼的效率 Visual Studio 設置自定義代碼段方法:①新建文件XXX.snip ...
  • 圖片特征向量是一種用於描述圖片內容的數學表示,它可以反映圖片的顏色、紋理、形狀等信息。圖片特征向量可以用於做很多事情,比如圖片檢索、分類、識別等。 本文將介紹圖片特征向量的提取以及相似度的計算,並使用C#來實現它們。 文章開始前,我們先來簡單瞭解一下 OpenCV 和 OpenCvSharp4,這兩 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...