关于设计,复用,学习的杂感

 

首先声明,本人是搞.net winform的,一些说法可能不大适用于BS ,如果和各位看官的winform的经验有冲突,欢迎探讨。

 

 

1.关于设计

如果你是一个真正的开发人员,在接到一个任务时,一定要从最基本的抽像做起,去分清业务,分清数据,你可以先画一两个界面 来表达一下自己的想法,但是业务逻辑的设计,一定要做到。

因为国内的软件公司 ,大部分都是中下层的小公司 ,分工时大部分都是一个人一个模块的。

一个模块,也就是说,从数据,到逻辑,到表现,都由一个人做。

这样,逻辑设计就有可能和表现模糊起来。

逻辑要好到什么程度,说一些极端一些的问题,我觉得,在一个好的winform程序里,如果逻辑层设计好了 在一个窗体中,是看不到条件判断的语句的。

比如,你判断一个操作执行的是否正确,你可以这样

 

A a = new A();

if(a.foo()==true){

}
else{

MessageBox.Show(
"执行出错了。");

}

 

这样的处理,也无可厚非。

但是,我更倾向于这种

新写一个函数

 

class A {

Public 
void Foo(){

if(a.foo())

return;

else

Throw 
new Exception("执行出错");

}

 

 

之后,在窗体的程序中,你只需要这样写。。

 

try{

A a 
= new A();
a.Foo();

}
catch(Exception ex){

MessageBox.Show(ex.Message);

}

 

注意,我这里是winform ,因为BS下,如果考虑异常的效率 ,这样做可能不妥。

为什么要这样做,其实很简单,如果你要这个执行返回多种结果和提示。你在以后只需要改写Foo()中的throw 逻辑

 

2.关于复用

什么样是复用?我觉得一个程序员的技能好坏,就再于他对复用的理解。。说极端一些,要时刻“为了复用而复用”,在设计时,要时刻想着,我这个设计哪个东西可以抽象出来。举个例子,在winform中(不好意思,还是winform),我要让一个datagridview在第一列显示行号。

一个很简单的功能。在网上找一下,不到50行代码就能搞定(这段不贴了,网上很多)。

但是,如果再遇到呢?还找50行代码?

复制,粘贴?

一个程序员,如果有一年以上的同种开发环境的经验。他一定要有自己的控件库。。

这里注意,是控件库,不是代码库。。

拿上面的例子。

我自己建一个工程,继承一下dataGridView 如下。

 

Code

以后再有类似问题,我直接用我这个dataGridViewOK了。

不光是控件复用,逻辑也能复用。

而且,在复用时,一定要想着怎么在复用时会方便,快捷。

拿用户管理来说。

Winform 用户管理很多都是菜单项什么的存在数据库里动态配置,这样很好管理

也容易复用。

但是,如果在一个新项目,要用原来的用户管理,怎么用?

加到里面,然后手工建立数据库表,对着菜单项建立各种权限?

我为什么不写一个静态类

加上函数

 

namespace UserManage{
public static class Init{
public static void Init(String connectionstring,Menu mainFormMenu);
}

 

自动在数据库建立表,按照菜单Mainform.Menu生成权限,管理员组,默认管理员密码?

这个函数,可能用一小时就能写出来。

但是这一小时,为你以后每一个项目都省了一小时。

 

3.关于学习

很多人热衷于新技术的学习,出了.net mvc,学习一下,silverlight 学习一下。。。。

最后会很多技术,但是真正做一个项目,傻了。

不知道怎么用,不知道用到什么程度。

作为一个程序员,学习是多方面的,至少分以下三方面:

1.理论:数据结构,算法,编译,操作系统……

2.工程:软件工程,设计模式……

3.技术:语言,环境,框架……

在程序员成长的过程中,这三样一样都不可少。

但有人就偏相信于第3条的第三小款。框架。。

其实就是现在所谓的技术 什么mvc,silverlight,.net 4.0 但是学了真能用上吗?学了就真把你自己提高了?

你会N种技术,我让你建个模,你还是不会,让你做个系统 ,你也不会。

我学得人应该多方面的发展。

那么,对于技术,也就是框架 ,怎么学习?

不是不学,而要学大概。

在上面三条中,技术,就相当于你的工具,当你遇到 问题时,你只要知道你要用什么工具就行了。也就是说,你要知道工具有什么特点,能解决什么问题。等到真正用时,我把工具的说明书拿来,照着使就行了。

 

 

本人不才,语言表达也一般,以上三条,希望大家沟通,欢迎拍砖。

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/geyunfei/p/1603213.html