是空的?我開始與isnull 推斷來逐個,但這個地方確實是很是重。咱們拿着反覆抓必要的抽象原則,同時類似有不一樣的實現功能。今天被認爲是一個概要。開胃菜,但願你們多多提出寶貴意見。sql
抽象,更好的代碼複用,也便於往後的維護。但願在作合做版的時候。能對這些問題有一個更加深入的理解。數據庫
這可以單獨寫一個方法或是小類。優化
下面是參照高曉青師傅的博客寫的。設計
''' <summary> ''' 推斷窗口上所有控件是否爲空 ''' </summary> ''' <remarks>Boolean</remarks> Public Class IsRight Public Function isNull(log As Windows.Forms.Control.ControlCollection) As Boolean Dim ConObject As New Control Dim flag As Boolean flag = True '默認所有控件內部都有值 For Each ConObject In log '利用TypeOf 查看空間類型 If TypeOf (ConObject) Is TextBox Then If ConObject.Text.Trim = "" Then 'Tag表明當前爲空的控件 MsgBox(ConObject.Tag.ToString + "不能爲空,請輸入完整", vbOKOnly, "提示") ConObject.Focus() flag = False Return flag Exit Function End If End If Next Return flag End Function ''' <summary> ''' 推斷是否爲數字 ''' </summary> ''' <param name="log"></param> ''' <returns></returns> ''' <remarks>Boolean</remarks> Public Function IsNumberic(log As Windows.Forms.Control.ControlCollection) As Boolean Dim ConObject As New Control Dim flag As Boolean flag = True '默認所有控件內部都有值 For Each ConObject In log '利用TypeOf 查看空間類型 If TypeOf (ConObject) Is TextBox Then If IsNumeric(ConObject.Text) = False Then 'Tag表明當前爲空的控件 MsgBox(ConObject.Tag.ToString + +" " + "請輸入數字", vbOKOnly, "提示") ConObject.Focus() flag = False Return flag Exit Function End If End If Next Return flag End Function
這樣一個類,能循環推斷所有的控件是否爲空,或是否爲數字。code
固然,細緻看了上面一個代碼你就會了解到,咱們還需要在設計空間的時候,將每個空間寫上它們本身的名字,方便給出精準的提示。orm
這個類直接放在U層就能夠。對象
那咱們看看它的client調用時這種。blog
Dim MyObject As New IsRight Dim MyObjectNum As New IsRight If MyObject.isNull(Controls) = False Then Exit Sub End If If MyObjectNum.IsNumberic(Controls) = False Then Exit Sub End If
U層ip
Public Class GetTime Shared Function GetDate() As Date Dim getDate1 As New BLL.TimeBLL Return getDate1.GetDate End Function Shared Function GetTime() As Date Dim getTime1 As New BLL.TimeBLL Return getTime1.GetTime End Function End Class
B層僅僅是個傳遞。並沒有實質性內容。咱們看看D層的代碼。你能一眼找到關鍵的兩句麼rem
''' <summary> ''' 獲取日期 ''' </summary> ''' <returns></returns> ''' <remarks></remarks> Public Function GetDate() As Date Implements ITime.GetDate Dim sql As String '定義字符串變量sql 用於存放要運行的語句 sql = "Select CONVERT(varchar(100), GETDATE(), 23) " '獲取日期的代碼 Dim cmdType As CommandType = CommandType.Text 'commandType 指定怎樣解釋命令字符串 Dim sqlHelper As New Global.sqlHelper.sqlHelper '實例化sqlHelper這個類的對象 Dim dt As New DataTable Dim SqlDate As String dt = sqlHelper.ExecSelectNo(sql, CommandType.Text) SqlDate = dt.Rows(0)(0).ToString Return SqlDate End Function ''' <summary> ''' 獲取時間 ''' </summary> ''' <returns></returns> ''' <remarks></remarks> Public Function GetTime() As Date Implements ITime.GetTime Dim sql As String '定義字符串變量sql 用於存放要運行的語句 sql = "Select CONVERT(varchar(100), GETDATE(), 24) " Dim cmdType As CommandType = CommandType.Text 'commandType 指定怎樣解釋命令字符串 Dim Parameter As SqlParameter() 'sqlParameter表示 SqlCommand 的參數,也可以是它到 DataSet 列的映射 Parameter = {} Dim sqlHelper As New Global.sqlHelper.sqlHelper '實例化sqlHelper這個類的對象 Dim dt As New DataTable Dim SqlTime As Date dt = sqlHelper.ExecSelectNo(sql, CommandType.Text) SqlTime = dt.Rows(0)(0).ToString Return SqlTime End Function End Class
房費制。這是咱們本身的我的生活,使一個系統。這讓我先感謝寫了許多其餘的思惟程序。咱們有一個很是大的空間去思考如何使咱們的代碼更靈活,更強大的。咱們從代碼農民開始,它會越走越遠。
再次。但願本文能拋磚引玉,你的房間,您是如何抽象和優化?歡迎您留下意見。