由一个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);
}
}
使用
//赋值
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);