我把东西都封装成类了,有没有坏处?

时间:2022-11-28 21:54:27
     本人之前是学C/C++的。
     最近学校叫我弄一个项目,就是做个网站~供学生选择毕业设计的题目。
    框架是 framework 4.0,语言是C#,ASP.NET
   
    可能习惯问题,我基本都喜欢把操作都封装成类。例如:

public static int Thesis_choose(string sid,string thid)
        {
            DataTable dt_stu = SqlHelper.ExecuteDataTable("select thesiswait,thesischoose,fouder_id from t_student,t_thesis where sid=@sid and thid=@thid", new SqlParameter("@sid", sid), new SqlParameter("@thid", thid));
            if (dt_stu.Rows.Count <= 0)
            {
                return -1;        //没有找到此学号有关的信息
            }
            else
            {
                DataRow dr = dt_stu.Rows[0];
                int thesischoose = Convert.ToInt32(dr["thesischoose"]);
                int thesiswait = Convert.ToInt32(dr["thesiswait"]);
                string tid=dr["fouder_id"].ToString();

                if (thesischoose == 1)
                {
                    return -2;    //此学生已经选择了一个论题
                }
                else if(thesiswait==1)
                {
                    return -4;     // 此学生有一个自命题正在等待审核中
                }
                else
                {
                    int count_th = SqlHelper.ExecuteNonQuery("insert into t_th_stu(thid,sid,tid,choose_time) values(@thid,@sid,@tid,@choose_time)",
                        new SqlParameter("@thid", thid),
                        new SqlParameter("@sid", sid),
                        new SqlParameter("@tid", tid),
                        new SqlParameter("@choose_time", DateTime.Now));
                    int count_theis = SqlHelper.ExecuteNonQuery("update t_thesis set choosed=1 where thid=@thid", new SqlParameter("@thid", thid));
                    int count_stu = SqlHelper.ExecuteNonQuery("update t_student set thesischoose=1 where sid=@sid", new SqlParameter("@sid", sid));

                    if ((count_stu == 1) && (count_th == 1) && (count_theis == 1))
                    {
                        return 0;  //更新数据成功
                    }
                    else
                    {
                        return -3; //更新数据失败
                    }
                }
            }
        }      //学生选择论题


       还有很多类,有些类可能就是几行代码,返回一个表。例如:
      
public static DataTable Student_thesis(string sid)
        {
            DataTable dt = SqlHelper.ExecuteDataTable("//语句过长,不展示", new SqlParameter("@sid", sid));

            if (dt.Rows.Count <= 0)
            {
                return null;
            }
            else
            {
                return dt;
            }
        }    //学生查看自己已经选择的论题


     自己也百度过这方面的问题,没有找到答案,而周围同学也不是很懂。
     现在想问问各位大神:
    
     问题一:这样做,对效率有没有影响?
     问题二:我这样写ASP.NET,会不会很蛋疼?

  谢谢了。

    

7 个解决方案

#1


你的不叫“类”, 叫“方法”。 把操作封装在方法里没什么不好,这样更利于单元测试和代码重用。

不过我本人更倾向于使用能实例化的类的实例方法,而不是静态类的静态方法。

#2


引用 1 楼 bwangel 的回复:
你的不叫“类”, 叫“方法”。 把操作封装在方法里没什么不好,这样更利于单元测试和代码重用。

不过我本人更倾向于使用能实例化的类的实例方法,而不是静态类的静态方法。


主要是学校的服务器太渣了,而且作为学院试点,300多个人使用。感觉应该不会出现问题。

其实最主要的问题是,平时都在准备考研,之前没学过C#和做网站的经验,这次完全是赶鸭子上架,我又不想浪费太多时间在上面,所以做完项目之后感觉挺心虚的。

#3


如果经常需要使用,那么你就这样写呗。

不过我要强调的是,不要因为你封装了,就要求别人一定使用。只要你抱着这个开放的态度,而不偏执,那么你封装1000个类也没有关系——反正别人可能不用。

我们写程序,当然是class和接口越少越好,代码越少越好,修复bug时需要修改的代码越少越好。但是任何事情都不是幼稚地单方面的,我们还要求多用代码来描述抽象和扩展的规范,要求设计出来的流程天生就比别的流程更高效,要求可以持续(例如每天都)发布,要求真正地简洁而不是为了什么“三层情节”结果弄出一堆繁琐且又臭又长的DAL,等等。

总之你应该保持一定时间的开放态度。特别是当你做的东西不过是纠结于“特别技术化”而貌似跟实际用户的千变万化的需求改变相比不太“接地气”的时候,没有必要纠结于技术。

#4


“效率”要看你是纠结于个别语句的执行速度对整个程序的“卖价”有什么影响呢?还是执着于软件工程的效率。当然,如果你写的程序都是一年后就废弃的,那么无需考虑软件工程。

至于是不是“蛋疼”,你和你得小伙伴多研究一下。各人的体会不同,不同的团伙体会不同。

#5


引用 2 楼 lilin_colin 的回复:
其实最主要的问题是,平时都在准备考研,之前没学过C#和做网站的经验,这次完全是赶鸭子上架,我又不想浪费太多时间在上面,所以做完项目之后感觉挺心虚的。

我对极限编程技术的经验稍微多一些。“勇气”不是来自于你整天纠结于“是非”,而是来自于你永远都会编织“安全网”。有了好的软件工程方法,你就不用纠结于“是非”,你可以允许别人随时都来修改你的代码,你可以经常重构大型且基础的架构,你可以保证两三天就发布新产品而不用担心最近改动代码以后有多少bug还没有回归测试,等等,这些都不是来自于让别人给你说“是非”理论,是来自于你自己是否有测试驱动开发技术。

#6


引用 4 楼 sp1234 的回复:
“效率”要看你是纠结于个别语句的执行速度对整个程序的“卖价”有什么影响呢?还是执着于软件工程的效率。当然,如果你写的程序都是一年后就废弃的,那么无需考虑软件工程。

至于是不是“蛋疼”,你和你得小伙伴多研究一下。各人的体会不同,不同的团伙体会不同。


引用 1 楼 bwangel 的回复:
你的不叫“类”, 叫“方法”。 把操作封装在方法里没什么不好,这样更利于单元测试和代码重用。

不过我本人更倾向于使用能实例化的类的实例方法,而不是静态类的静态方法。


谢谢两位大神。

这样做,对于我想要的效果应该不会有什么影响~

#7


自己这么写几个类算什么,君不见.net里的类才是密密麻麻,继承级别更是恐怖,也没有什么影响啊

#1


你的不叫“类”, 叫“方法”。 把操作封装在方法里没什么不好,这样更利于单元测试和代码重用。

不过我本人更倾向于使用能实例化的类的实例方法,而不是静态类的静态方法。

#2


引用 1 楼 bwangel 的回复:
你的不叫“类”, 叫“方法”。 把操作封装在方法里没什么不好,这样更利于单元测试和代码重用。

不过我本人更倾向于使用能实例化的类的实例方法,而不是静态类的静态方法。


主要是学校的服务器太渣了,而且作为学院试点,300多个人使用。感觉应该不会出现问题。

其实最主要的问题是,平时都在准备考研,之前没学过C#和做网站的经验,这次完全是赶鸭子上架,我又不想浪费太多时间在上面,所以做完项目之后感觉挺心虚的。

#3


如果经常需要使用,那么你就这样写呗。

不过我要强调的是,不要因为你封装了,就要求别人一定使用。只要你抱着这个开放的态度,而不偏执,那么你封装1000个类也没有关系——反正别人可能不用。

我们写程序,当然是class和接口越少越好,代码越少越好,修复bug时需要修改的代码越少越好。但是任何事情都不是幼稚地单方面的,我们还要求多用代码来描述抽象和扩展的规范,要求设计出来的流程天生就比别的流程更高效,要求可以持续(例如每天都)发布,要求真正地简洁而不是为了什么“三层情节”结果弄出一堆繁琐且又臭又长的DAL,等等。

总之你应该保持一定时间的开放态度。特别是当你做的东西不过是纠结于“特别技术化”而貌似跟实际用户的千变万化的需求改变相比不太“接地气”的时候,没有必要纠结于技术。

#4


“效率”要看你是纠结于个别语句的执行速度对整个程序的“卖价”有什么影响呢?还是执着于软件工程的效率。当然,如果你写的程序都是一年后就废弃的,那么无需考虑软件工程。

至于是不是“蛋疼”,你和你得小伙伴多研究一下。各人的体会不同,不同的团伙体会不同。

#5


引用 2 楼 lilin_colin 的回复:
其实最主要的问题是,平时都在准备考研,之前没学过C#和做网站的经验,这次完全是赶鸭子上架,我又不想浪费太多时间在上面,所以做完项目之后感觉挺心虚的。

我对极限编程技术的经验稍微多一些。“勇气”不是来自于你整天纠结于“是非”,而是来自于你永远都会编织“安全网”。有了好的软件工程方法,你就不用纠结于“是非”,你可以允许别人随时都来修改你的代码,你可以经常重构大型且基础的架构,你可以保证两三天就发布新产品而不用担心最近改动代码以后有多少bug还没有回归测试,等等,这些都不是来自于让别人给你说“是非”理论,是来自于你自己是否有测试驱动开发技术。

#6


引用 4 楼 sp1234 的回复:
“效率”要看你是纠结于个别语句的执行速度对整个程序的“卖价”有什么影响呢?还是执着于软件工程的效率。当然,如果你写的程序都是一年后就废弃的,那么无需考虑软件工程。

至于是不是“蛋疼”,你和你得小伙伴多研究一下。各人的体会不同,不同的团伙体会不同。


引用 1 楼 bwangel 的回复:
你的不叫“类”, 叫“方法”。 把操作封装在方法里没什么不好,这样更利于单元测试和代码重用。

不过我本人更倾向于使用能实例化的类的实例方法,而不是静态类的静态方法。


谢谢两位大神。

这样做,对于我想要的效果应该不会有什么影响~

#7


自己这么写几个类算什么,君不见.net里的类才是密密麻麻,继承级别更是恐怖,也没有什么影响啊