由一个WF项目说起

很上时间没做什么让自已满意的项目了,除了做些方案、标书,主要就是接一些烂尾项目。
前段时间有幸又参与了一个与WF有关的烂尾项目。
对烂尾项目一般三条路:
1、马上结束,给用户退钱,处理问题人员
2、尽力完善,修改合同,以收回开发成本为目标
3、不惜一 切代价,完成项目

该选那条路,我从来不关心,从来只是充当第2、3条路的执行者。

有时常说自已像一个雇佣兵的队长,带着几个临时队员,向自已都不知道的目标进发。

但实际上我却总陷入一种无能为力的情况,举个例子:

一个病人,让我治疗,他得的是绝症(或者说以我的水平是回天无力),但我又不能直接将他操渡,只能看着他痛苦的挣扎,并一点点耗尽他家人的积蓄,而我已经麻木了,唯一敏感的就是这家人下个月只否还有钱付给我医疗费......

我的任务是冶病,给项目冶病。

我不喜欢、没兴趣、也没能力一遍遍分析项目的病因,是天灾还是人祸已经都不重要了,
我只想说:我想说:说:

使用最新的技术,是很多程序员向往的。但如果你是一个项目的设计人员,对某个新技术只了解了皮毛,没有作详细的可行性分析,就将该技术作为一个新项目的核心,我只能说你无知、愚蠢!

我不会轻易说一个技术人员无知、愚蠢,因为那同样是对我自已的不尊重。所以我不得不以小人之心看你,你对这个新技术感兴趣,你想借这个项目练手,成则万幸,不成你就换一家公司,当然你此时已经可以在简历中写上精通该技术了。

作项目就要脚踏实地,不要空谈,不要动不动就什么模式,什么架构,写的代码比混淆处理过的还难懂

这个烂项目算是完了,对他作了什么,只有我知道,

我是一个很有办法的医生,我有一种灵药,给癌症病人止痛非常有效,我不告诉你这是什么药,不是我保密,是我没脸说

使用WF开发系统,实际的流程都是在页面代码里写死的,然后直接操作数据库,我都佩服自已

 

心情严重不好,写段代码发泻一下:

我自创的,管他叫数据与控制相分离模式
通常会出现如下这种代码:

// 一要改写的源型
public   class  _ClassTest
{
private int v1;
public int V1
{
get return v1; }
set { v1 = value; }
}

private int v2;
public int V2
{
get return v2; }
set { v2 = value; }
}

public int Add()
{
int temp = V1 + V2;
return temp;
}

}

我常用的写法:

// 接口
public   interface  IDataControl
{
void saveToFile(string path);
void loadFromFile(string path);
void getXML();
void loadFromXML(string XMLString);
}


// 数据
[System.Serializable]
public   struct  ClassTestData
{
public int v1;
public int v2;
}


// 控制
public   class  ClassTest
{
private ClassTestData Data = new ClassTestData();
public int V1
{
get return Data.v1; }
set { Data.v1 = value; }
}

public int V2
{
get return Data.v2; }
set { Data.v2 = value; }
}


public int Add()
{
int temp = V1 + V2;
return temp;
}


public void saveToFile(string path)
{
System.Xml.Serialization.XmlSerializer xs;
xs 
= new System.Xml.Serialization.XmlSerializer(Data.GetType());
System.IO.FileStream file 
= new System.IO.FileStream(path, System.IO.FileMode.Create);
xs.Serialize(file, Data);
file.Flush();
file.Close();
}


public void loadFromFile(string path)
{
System.Xml.Serialization.XmlSerializer xs;
xs 
= new System.Xml.Serialization.XmlSerializer(typeof(ClassTestData));
System.IO.FileStream file 
= new System.IO.FileStream(path, System.IO.FileMode.Open);
Data 
= (ClassTestData)xs.Deserialize(file);
}

public string getXML()
{
System.Xml.Serialization.XmlSerializer xs;
xs 
= new System.Xml.Serialization.XmlSerializer(Data.GetType());
System.IO.MemoryStream m 
= new System.IO.MemoryStream();
xs.Serialize(m, Data);
byte[] b = m.GetBuffer();
System.Text.UTF8Encoding utf8 
= new System.Text.UTF8Encoding();
string XMLString = utf8.GetString(b);
return XMLString;
}

public void loadFromXML(string XMLString)
{
System.Xml.Serialization.XmlSerializer xs;
xs 
= new System.Xml.Serialization.XmlSerializer(typeof(ClassTestData));
System.IO.MemoryStream m 
= new System.IO.MemoryStream();
System.Text.UTF8Encoding utf8 
= new System.Text.UTF8Encoding();
System.IO.TextReader tr 
= new System.IO.StringReader(XMLString);
Data 
= (ClassTestData)xs.Deserialize(tr);
}

}

使用

ClassTest obj   =   new  ClassTest();

// 赋值
obj.V1  =   123 ;
obj.V2 
=   456 ;

// 使用
int  v =  obj.Add();

// 保存到文件
obj.saveToFile( " C:\a.xml " );

// 从文件加载
obj.loadFromFile( " C:\a.xml " );

// 得到数据的XML串
string  s  =  obj.getXML();

// 从XML串加载
obj.loadFromXML(s);







 

你可能感兴趣的:(项目)