我是靠谱客的博主 俊逸刺猬,最近开发中收集的这篇文章主要介绍项目心得(代码篇),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.       如果一个字符串是由多个字符串拼接("hello"+"world")而成,建议使用string.Format函数实现同样功能,这样不仅可读性高,而且效率也高(特别是在组合SQL语句时,使用此方法更有利于SQL的阅读),比如下列代码:

string msg = "rn---------Log Time:" + System.DateTime.Now.ToString() + "--------rn" + text;

换成

string msg = string.Format("rn---------Log Time:{0}--------rn{1}", System.DateTime.Now.ToString(), text);

 

   string xx = string.Format("Select * From Test Where Id={0}", 1);

 

好一点

关于此用法,我们还可以在StringBuilder变量中用得到,比如以下语句:

   System.Text.StringBuilder sb = new System.Text.StringBuilder();

   sb.AppendFormat("Exception is {0}", ex.ToString());

 

2.       枚举变量的声明,声明变量之后可加冒号,也可不加,如果枚举变量类型不多,可以指定成员变量类型为byte,可以节省存储空间(不过这个意义一般,不是很大)

    public enum OperateType : byte

    {

        Add,

        Modify,

        Delete,

        Unknown

    };

3.       错误日志记录,为了防止在程序运行期间抛出未在程序中处理的错误,可在程序入口处(main函数体中)加入以下代码来记录具体出错日志

            //-----------处理应用程序中未捕获的错误,记录到日志-------------

            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

            //-------------------------------------------------------------

 

        private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)

        {

            string errMsg = string.Format("Application.ThreadException Occurs:rn{0}", e.Exception.ToString());

            Utility.LogMsg.WriteLogToApplicationFolderByMonth(errMsg);

            //throw new NotImplementedException();

        }

这样可以把运行期间未在程序中处理的错误全部记录下来,以备调试可用

 

4.单件模式的使用,很多时候我们需要限定类只有一个实例,这时我们可以考虑使用单件模式来实限此功能,比如我们在一般应用程序中,必须要限定某个窗体只能打开一个,不允许有多个实例,可以使用下面方法

 

        private static MDIMainForm _instance;

 

        public static MDIMainForm Instance()

        {

            if (_instance == null)

            {

                _instance = new MDIMainForm();

            }

            return _instance;

        }

然后把构造函数定义为私有的,不允许直接调用构造函数直接实例化,如下所示

        private MDIMainForm()

        {

            InitializeComponent();

        }

 

4.     递归算法,项目中有一个无限分类的树,需要穷举出树的所有结点,因为不能确定树的层数(也不允许限定层数,因为可以是N),想了很多方法都不行,最后才想到使用递归,实现起来容易多了,当然我们可以根据这个算法解决很多类似问题,解决方案可参考

        #region 无限分类实现(使用递归方法实现)

        private void BindToTreeView(int partentID, TreeNode node)

        {

            string loadedItem = string.Empty; //已加载条目

 

            DataRow[] drs = dtClass.Select("ParentID=" + partentID);

            foreach (DataRow dr in drs)

            {

                string rowTag = dr["Class_ID"].ToString().Trim();

                if (loadedItem.Contains(rowTag)) continue;

 

                loadedItem += rowTag;

 

                string nodeItemName = dr["Name"].ToString().Trim();

                TreeNode subNode = new TreeNode(nodeItemName);

 

                subNode.Tag = dr["Class_ID"].ToString().Trim();

                subNode.ToolTipText = dr["Description"].ToString().Trim();

 

                if (node == null)

                {

                    this.treeViewClass.Nodes.Add(subNode);

                }

                else

                {

                    node.Nodes.Add(subNode);

                }

 

                if (dtClass.Select("ParentID=" + dr["Class_ID"].ToString()).Length > 0)

                {

                    BindToTreeView(int.Parse(dr["Class_ID"].ToString()), subNode);

                }

            }

        }

        #endregion

转载于:https://www.cnblogs.com/chenzz/archive/2007/11/19/964919.html

最后

以上就是俊逸刺猬为你收集整理的项目心得(代码篇)的全部内容,希望文章能够帮你解决项目心得(代码篇)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部