一年半之前的疑问,再问一遍,基础的

缘起:07年8月进公司发现公司的控制页面跳转和功能执行方式如下,
jsp页面存放两个隐藏参数:
1)view:决定处理类型;
2)action:决定处理方式:
3)服务器端controller代码结构:
[code="java"]
if(view.equals("insert")){
if("insertProjectMes".equals(action)){
}
if("insertPictures".equals(action)){
}
...
}
else if(view.equals("update")){
...
}
else if(view.equals("select")){
...
}
else if(view.equals("delete")){
...
}
[/code]

每个controller十几个if,else也是家常便饭,多的时候几十个,而且业务经常新增,看到03年一直被修改过来的代码也是经常的事。

辞职在家进修学习,又想这个问题:请问怎么去除这些if else呢?

个人想法(spring):
1)在spring上下文中配置一个jsp,和controller,和一个action参数
2)在jsp中放置参数,值在第一次访问jsp的时候被spring注入;
3)controller中
a)定义四个接口,对应操作类型:有参数无返回,无参数无返回,有参数有返回,有参数无返回;
public interface Do1 {
Object doing();//无参数有返回
}
public interface Do2 {
void doing();//无返回无参数
}
public interface Do3 {
void doing(Object o);//无返回有参数
}
public interface Do4 {
Object doing(Object o);//有返回有参数
}

b)业务处理类,以action的值命名,实现上面某个接口,controller的内部类实现并存入map对象

c)controller通过map对象管理处理类,并在客户提交的时候根据传过来的action参数反射调用相应的业务处理类。

似乎就是一个状态模式。好处就是每个人需要添加的时候只要在后面添加新的内部类,并把自己加入map就行。

请问怎么去除这些if else呢? 谢谢

5个回答

像这种代码可以说可维护性太差
一定要用多态,这也太多if else了

可以搞个命令模式,把view,和action封装成一个对象
class Command{
String view;
String action;
...
}

服务器端controller增加方法可为:
processRequest(Command c)
用这个方法处理
[code="java"]
if(view.equals("insert")){
if("insertProjectMes".equals(action)){
}
if("insertPictures".equals(action)){
}
...
}
else if(view.equals("update")){
...
}
else if(view.equals("select")){
...
}
else if(view.equals("delete")){
...
}

[/code]

对了,每一个view,action值对都应该有对应的一个类,
比如:
InsertProjectMesAction,InsertPicturesAction,后面的同理
它们实现一个接口Action

public interface Action
{
processAction( 要用到的参数);

}

Map map = ....

controller通过Map map对象管理Action类,并在客户提交的时候根据传过来的每一对view,action参数构建一个Command,然后调用相应的业务处理类。

可以试试,spring java的反映机制

使用State 模式。

这种情况改成观察者模式。

我觉的你把问题搞复杂了,如果每个action对应一个方法的话,那么在controller里直接根据这个参数用反射拿到Method然后再调用invoke方法就行,一个if else也不需要,做法类似于struts的dispatchAction(大概是这个类名,很久没用记不清了).

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
再问一遍再问一遍再问一遍再问一遍
http://www.csdn.net/expert/TopicView.asp?id=266985 rn88分rnhttp://www.csdn.net/expert/TopicView.asp?id=279411 rn101分rn这个问题共计300分
再问一遍
我这样写了下面的程序rnif (savedialog->Execute())rn rn ::CopyFile("default.bsd",savedialog->FileName.c_str(),false);rn rn问题是default.bsd只能复制到当前目录,不能复制到其他选择的目录,如何解决?rn
再问一遍!!!!
这个问题问了N次了,,,rn请各位看清楚题了,再做出回答rn[color=#FF0000][/color]rn我写了一个数据库连接的类conns在命名空间conn里; rn放在app_code的文件中(在网站的根目录里) rn[color=#FF0000]在VS在运行正常 [/color] rn但在浏览器在打开出现 rn"找不到类型或命名空间名称“conn”(是否缺少 using 指令或程序集引用?)" rn使用了using connrn搞了半天 rn晕。。。。 rn帮帮我呀 rn注* 运行其它asp.net程序正常; rn[color=#FF0000]在VS在运行正常 [/color]rn[color=#FF0000]在VS在运行正常 [/color]rn[color=#FF0000]在VS在运行正常 [/color]rn[color=#FF0000]在VS在运行正常 [/color]rn[color=#FF0000]在VS在运行正常 [/color]rn[color=#FF0000]在VS在运行正常 [/color]rn[color=#FF0000]在VS在运行正常 [/color]rn[color=#FF0000]在VS在运行正常 [/color]rn rnrn
再问一遍!!!
请教各位,如何对datagrid的行进行手工添加,就是不希望绑定到某个recordset,而是手工添加。rn
一年半了
好久没有写博客了,工作了一年半觉得应该开始写些东西了。和前面为了找工作写博客不同,现在写这些东西不但是为了能够记录下学过的东西,温习温习,也希望能将接触到的东西分享给别人。 ...
我还想再问一遍
在一段关于QucikRep.print 的code中用到了try..finally..的异常处理,发现不管用,有朋友说是QucikRep固有的,于是改用try..except..on exceptionN do ..。不知exceptionN 的表达式何处可查询,在help中我只找到了类似STATUS_INTEGER_DIVIDE_BY_ZERO,STATUS_ARRAY_BOUNDS_EXCEEDED,STATUS_FLOAT_OVERFLOW,STATUS_FLOAT_INEXACT_RESULT ..的exception code。rn另外,在回复贴子: rn “回复人:luhongjun(过江项羽) (2001-5-29 18:44:00) 使用try截获之后rn如果你需要在这个事件代码结束后再去重复Post动作,加上这个语句:rnAction := daRetry;rn如果你需要在这个事件代码结束后,由程序默认的错误处理给出错误提示,加上这个语句:Action := daAbort;”rn但我在delphi3下编译提示“undeclared indentifier'action‘”,那么delphi3下有等效的语句吗?谢谢。rnrnrn
吐血了,再问最后一遍了!!!
java运行class文件问题!!rn上代码::(可运行)rnimport java.io.BufferedReader; rnimport java.io.File; rnimport java.io.IOException; rnimport java.io.InputStream; rnimport java.io.InputStreamReader; rnrnpublic class CompileAndRun rnrn private String mess = null; rn private File file; rn private Runtime runtime; rn private Process pro; rnrn public static void main(String[] args) rn CompileAndRun com = new CompileAndRun(); rncom.isRun(); rn rnrn public CompileAndRun() rn this.runtime = Runtime.getRuntime(); rn rn rnpublic void isRun() rntry rn //执行命令 rn pro = runtime.exec("cmd /c java "+"-classpath D:\\Test"+"Java23.class"); rn //取得命令结果的输出流 rn InputStream fis = pro.getInputStream(); rn //用一个读输出流类去读 rn BufferedReader br = new BufferedReader(new InputStreamReader(fis)); rn String line = null; rn //逐行读取输出到控制台 rn while ((line = br.readLine()) != null) rn System.out.println(line); rn rn catch (IOException e) rn e.printStackTrace(); rn rnrn rnrn帮忙看下程序,为什么不能运行一个编译好的class文件。这个程序的输出结果居然是直接在cmd操作下输入java指令的结果。。。我想要运行class文件得到的结果,请问哪里写错了。 rnrn这个代码运行的结果居然是:rnUsage: java [-options] class [args...]rn (to execute a class)rn or java [-options] -jar jarfile [args...]rn (to execute a jar file)rnrnwhere options include:rn -client to select the "client" VMrn -server to select the "server" VMrn -hotspot is a synonym for the "client" VM [deprecated]rn The default VM is client.rn rn -cp rn -classpath rn A ; separated list of directories, JAR archives,rn and ZIP archives to search for class files.rn -D=rn set a system propertyrn -verbose[:class|gc|jni]rn enable verbose outputrn -version print product version and exitrn -version:rn require the specified version to runrn -showversion print product version and continuern -jre-restrict-search | -jre-no-restrict-searchrn include/exclude user private JREs in the version searchrn -? -help print this help messagern -X print help on non-standard optionsrn -ea[:...|:]rn -enableassertions[:...|:]rn enable assertionsrn -da[:...|:]rn -disableassertions[:...|:]rn disable assertionsrn -esa | -enablesystemassertionsrn enable system assertionsrn -dsa | -disablesystemassertionsrn disable system assertionsrn -agentlib:[=]rn load native agent library , e.g. -agentlib:hprofrn see also, -agentlib:jdwp=help and -agentlib:hprof=helprn -agentpath:[=]rn load native agent library by full pathnamern -javaagent:[=]rn load Java programming language agent, see java.lang.instrumentrn -splash:rn show splash screen with specified imagern
再问一遍,如何释放
char (*szBtnID)[8] = new char[3][8];rnfor(int i = 0; i < 8; i++)rnrn sprintf(szBtn[i], "%02X", i * 30);rnrndelete[] szBtnID;rnszBtnID = NULL;rnrn调试到delete时产生Normal block错误。rn环境 Win 2k Pro SP2(English)rn VS6.0 SP4(English)rn
再问一遍dll的问题。
我要用函数比如说InitEnvionment(),但是我只有这样一个头文件,头文件里面只写着rnBOOL WINAPI InitEnvionment(),还有两个DLL,例如说是:1.DLL 和2.DLL,在编译的时候,我怎么才能让编译器认识这个函数,而不报错呢?我在程序中用了AfxLoadLibrary(),但是不行。请多多指点! rnrn
没有高手了??????再问一遍!
下面的代码是把收的信息转发给所有的人,但实际上只有最后一个人收到信息,这是为什么??rnrnPrivate Sub winsock1_DataArrival(index As Integer, ByVal bytesTotal As Long)rn Dim str As Stringrn winsock1(index).GetData strrn i = 1rn l = MAX_COUNTrn for i=1 to lrn winsock1(i).senddata strrn next irnEnd Subrn
我再问最后一遍!
首先,声明我的观点:rnrn类中实例域的声明是在堆中的!!!rn例如:rnclass Testrnrn public void fun()rnrn int a; //这里的a属于局部变量,它才分配在栈里.rnrn rnrn private int a; //这个a应该是分配在堆中,而不是栈中!rnrnrn我以上的观点是否正确???
再问一遍这个this指的是谁?
function ClassB(sColor, sName) rnClassA.call(this,sColor); rnthis.name=sName; rnthis.sayName=function()alert(this.name);; rn rn其中ClassA.call(this,sColor)中的this,只的是ClassA还是ClassB?为什么 rn
问题再问一遍(关于CHtmlView)
简单说,我就是想支持用户标注Html页面,我又想普通浏览器可以看到。所以就想用标注rn程序接受标注者的鼠标事件,得到标注者在Html页面的标注位置,然后标注者可以存储自rn己的标注——也就是我的标注程序将用户的标注转换成Html标记形式的标注,以便IE用户rn可以看到标注信息。 rnrn现在可以在CHtmlView上画东西了(感谢111222(动感超人))。rn但是用CClientDC我不能让画的东西随着Html页面的滚动而滚动,我是要让画的东西位置rn相对页面固定。而且,我要知道用户在页面上的鼠标事件相对于页面的位置,这样好用rnHtml 在页面的相应位置添加东西。rnrn我的View继承了CHtmlView,但是我的View一点事都不管,连OnDraw函数都执行不到,更rn不用说什么相应鼠标事件了。rnrn再次感谢前面的兄弟姐妹们给我的指导,但是我实在是对VC很菜,菜的都不想说了。我只rn是会搞一些java,现在要用VC完成这个工程,是在是难为死我了。rnrn再次请求大家的帮助,这个工程师本人在实验室的关键一役!!!rnrn我倾全力给分,刚给了111222的分,我还要给。能解决点问题就给。rnrnThank you !
再问一遍。有没有人敢回答?
怎样安装Oracle9i?我装过后没反应。不能用。只有几个文件夹。谁知道?只要能用保证给分。谢了。
再问一遍"table does not exist"
用D5操作SQLServer,rnsqlserver中我自己建了一个库“ladb”,rn其中建了个表userinfo,ODBC中默认库是master。rn程序中:rn with query1 dorn beginrn close;rn sql.Clear;rn sql.Add('use ladb');rn execsql;rnrn close;rn sql.Clear;rn sql.Add('update userinfo set passwd=''123''');rn execsql;rn end;rn更新操作毫无问题。rn但如果这样写:rn with query1 dorn beginrn close;rn sql.Clear;rn sql.Add('use ladb');rn execsql;rnrn close;rn sql.Clear;rn sql.Add('select * from userinfo');rn open;rnrn edit;rn fieldbyname('passwd').AsString:='123';rn post;rn end;rn执行到edit时提示错误“table does not exist”rnrn此时如果将ODBC的默认库改为ladb,以上代码则顺利执行。rn可是我不想更改默认库,而且又想用edit等delphi语句执行更新,rn我该如何作?这个问题我一直觉得很奇怪,谁能帮我解决?
问题没解决,再问一遍
C#中如何判断NUM INS CAPS键的状态?
再问一遍!有人回答么?
先前问了一遍。没人回答。都不知道么?rn我想在做一个新的activex控件(.ocx),但却需要在其中调用另一个activex控件(用来显示gif动态图象)。我该如何做?rn请高手指点迷津!
毕业一年半
大学四年,没有人生目标的我,就是荒废了,不过庆幸的是遇见了现在的女朋友。         写下这篇博客,只是为了记录自己生活的点滴,以及今天,我删了DOTA2,移除了电脑手机上,所有和这款游戏有关的东西。我准备把大部分时间都花在程序上,为自己和家人的未来,努力!发表这个博客自我监督。         我本科学的是电气工程,毕业了干的是机务,觉得没挑战,没意思,就辞职了。当然,在现在看来,暂时还
一年半的程序员
    转眼间,做程序员已经一年半了,这一年半里,做了几个项目,也积累点经验。但总觉得自己没什么大的进步,技术方面有点停滞不前的感觉。想想要想提高功力,不是光做项目就可以的,还得要总结。总结经验教训,总结技术难点,总结收获不足,这样才能进步。以前总觉得自己做事情浮光掠影,流于表面,不能深入的钻研下去,结果只能得个皮毛而且。想要做一个好的程序员是一辈子的事情,要不断的积累总结前进,在流逝的时光里留下...
一年半的JAVA学习
在一年半前,我来了北大青鸟学习软件开发。第一个学期(也就是S1)的时候我没想什么事情,天天就是到网吧玩游戏;到了第二个学期(也就是S2)的时候才知道后悔了,就从S2的时候努力了,但是基础的距离还是离了一些距离了,没办法;到了最后一个学期(也就是Y2)的时候在学.NET部分的时候觉得越来越吃力,上课越听越糊涂,后来在没办法的情况下我选择了JAVA,虽然JAVA学得不是很差,但是也不是很好,JAVA成绩应该在中上吧,在考试的时候还好考的是JAVA,算是考过了。rn 但是现在已经毕业了,看着学得好的同学都出去找工作了,可我还在学校里面虚度光阴,我今天跟老师说我想出去,老师可说我还不能出去,说我还没达到出去的标准,可是我真的不想在学校里呆下去了,看着一个班的同学都出去了 都没不知道怎么在学校呆了,在学校里其他人问我 为什么还没出去 我都不知道怎么回答他们 好像我学得很差到现在都还没出去,我觉得我也不是学得很差啊,做项目都能做出来 都能完成。。。rnrn 这个时候我是不是考虑要转行呢?可以转行我又能到哪个行业去呢?
上班一年半 感悟
前期的打杂,到现在的努力有所收获 阶段总结 加油
从0到1的一年半
从2015年年初,做找教练项目(教练端、学员端),经过4个多月的时间,验证了做app是行不通的   2个月之后,策划了菲特云的初型。2015年年底,经过市场部同事的运作,机构数量开始增长。   网址也被同行业的人攻击,技术部对网址的安全做的更好之后,目前处于稳定的状态。   技术部招聘了4名员工,准备开发新的产品线。   公司的态势一直还是处于比较良好的状态
在FreeWheel一年半的小结
在FreeWheel工作有近一年半的时间,酸甜苦辣林林总总,基本上我最开始进入这家公司的目的都达到了。 学到的东西: 1,Rails开发实践 2,视频广告行业知识 当初FreeWheel创始人来北京和我们开发工程师一一面谈,其中问到我为什么选择来FreeWheel,我回答一是Ruby on Rails,我希望拥有更多Rails开发实践,二是因为视频这个近几年热门的行业,我希望了解在线视...
游戏测试一年半总结
游戏测试一年半总结 决定 2015.06毕业后在一家做移动APP的项目里担任软件测试工程师。前期一年工作学习都在有序的进行,对于老板的每次画饼都听的津津有味。项目在后期一个功能需求提出都耗时一两个月,工作生活太过于平静,上班等下班,爱折腾的我想在25生日之前做点改变。工作了一年八个月后提出离职,去从事游戏测试的工作。 初入 抱着热爱游戏的初衷来到游戏行业,起初对游戏的制作,游戏框架,游戏发行等等一...
一年半工作小结
15年10月来到腾讯, 实在太忙了, 一直没什么心思写博客. 还差5个月就满两年, 薪水涨了2次, 还算不错. 年终奖也挺多, 所以虽然累, 但是心里还是满足的. 可是我心里总是不安. 之前在甲骨文的两年多, 自己学了很多东西, 有一回跟女朋友去四川玩, 我在火车上看完了一本技术书, 反观现在的生活, 中午有空就打王者荣耀, 实在是惭愧啊. 是因为太累了, 回家反而不想学习了吗? 还是缺乏热情了
一年半的工作总结
1、毕业之初 使用工具MATLAB,算法研究,说话人识别; 2、工作一年半 使用工具MATLAB,c++,linux,算法研究,应用型; 3、心理变化 工作之初信心满满,注重基础算法的研究,文献看的多,MATLAB仿真实验进行无数次; 接到需求后,注重c++代码的开发; 工作后个人主观思维能力加强,注重了现实应用和算法之间的结合; 由于实际应用对算法性能有极高要求,在大样本情况下,
进入开发一年半的思考
杂文一篇,更多是我对于自己进入开发这个行业,一年半以来的一些回忆,一些记录,以及对于未来的一些想法和粗浅规划。没有大道理,不是要说啥,不为博君一笑,不想令君深思,只为提醒自己,自己的曾经。得来不容易,且行且珍惜。
一年半内个人计划
终于把当初高中建站的设想提上日程了(更多是因为软件安全的课程设计hhhh 昨天开始HTML学习,果然如很多帖子所说HTML和CSS用两天不能再多,标签化的东西一看就明白了。大概是因为有小小的进步吧,特别是做浏览器可以直观地展现出来结果,还蛮有成就感。 看很多大牛都说建立自己的网站或者写自己的博客很重要,把这个当作正儿八经开始学习的开始。 以下是近期要学习的流程和期望达到的
近一年半的工作经验总结
1,多催多跟进,事情会进展的快的多。        典型的经历:申请一台AF-8020高端设备,做高端母盘。刚到公司是小白,所以我填了申请单后,就等着储运部门发货过来,结果时间过了一个星期,设备还没到公司总部。若不是开发组长问进度,然后直接打电话给储运问设备,还不知道傻傻的我要等多久。打过电话,再发邮件抄送上层同事及相关责任人,结果设备第二天就发过来到公司了。这就是催与不催的差距! 2,对自己...
创业一年半项目经验分享
2017年9月从上家公司离职到现在,足足有1年半了,现在我把这一年半摸爬滚打总结出来的经验传授给大家。咳咳,开玩笑的,我也在不断的学习中,不敢妄自尊师,写这篇文章主要是想把自己的一些看法和想法以及处理项目的方法分享出来一起交流,说不定会遇到高人指点,突破瓶颈。 创业,九死一生,别说能不能赚钱,能把项目做出来上线已经不错了。所以没有背水一战的决心,真别趟这塘浑水。虽然自个儿做项目很自由,但要做好与孤...
工作一年半那些事
年末了,总会发现一些事情没有做,一些事情做得不够好,一些事情似乎没有必要去做。大约又是发现长了一岁,所以很多事情一考虑,就很头大。失眠啦,烦躁啦,什么的,哎。rnrn工作一年半,之前担心的事情,也渐渐清晰了,之前的价值观,现在也在渐渐改变,再固执的我,现在也发现年轻时候做了一些错事。现在回过头去看大学的那班孩子,总想说:瞧!那群SB。其实骂不是他们,而是骂的自己的过去。rnrn现在手头上的这份工作是大学期间找的第四份工作。由于挂科太多,技术底气不足(现在发现,只是我之前接触的高手太高),面的都是中小型企业。四份工作,一份外包不考虑,一份被刷,后来考虑呆在广州,这确定了现时这份工作。这家公司其实挺好,加班不多,一年时间,或许半年是在自我修行,纪律问题也很好说话,可惜氛围太差,不够聪明的人太多了。我对自己的定位是:我还是比较合适当凤尾,不合适当鸡头的人。9年义务教育,3年高中,4年大学,一路靠着自己的小聪明,和啃老的心态走了过来,发现自己在聪明人里,才会看到自己的差距,在一堆不怎么聪明的人里,总会得意忘了形。最近总想说,一念嗔心起,百万障门开,其实自我提醒就是这个。说到这个,我总想对高中一个同学说对不起,那会儿我骂他书呆子,他其实是个极其聪明的人,我嫉妒他了,现在只能望其项背了。顺带提一句,不知道现时持读书无用论的人还多不多,除去做生意或者拼爹的那些少数成功例子,其实你会发现,高等学府的人,无论如何,活得是比我这们这些二流大学出来的要好,至少在我的圈子是这样,一个氛围确实很重要,可是其实大家都打DOTA,是不是?rnrn其实,现在年纪越来越大,就越担心氛围对自己造成的影响,毕竟已经到了一个很容易形成定性思维的年纪了,除了想问题越来越绝对,发散思维也越来越差,记忆力也在衰减,回忆儿时的梦想,就会觉得越来越恐惧。哪一天,我要是没看代码就对着另外一名程序员说,你这样做不对。我觉得我就无法在技术这条道路上走下去了。现在的工作氛围就是我担心的事情,每每我判断一个人蠢不蠢,我总会用这样一个例子,那就是讨论int是多少字节的问题,虽然极少数人会讨论,或者讨论的人会就机器字数来讨论这个设计问题,但这就不是蠢问题了,蠢问题是他为什么不用sizeof(int)去验证,而要花一上午的时间来做这个无价值的事情。类似的事情很多,我就处在这个氛围之下,或多或少会被带进去。rnrn在这家公司里,我还是很佩服我的主管,他是个聪明人,教给我很多事情,例如从写学习型代码,转向写生产型代码。他虽然对各种技术不发烧,这限制了他的眼界,但是他考虑事情确实很周到,也很长远。如果他不一次又一次地将我的方案推倒,而是采用验证的思想证明我的方案是错误的,还有把我晾在项目外闲着,我其实挺喜欢这个人。这次年终总评,我发现我还是不错的,我不知道是不是其它人太差了,还是他其实还是欣赏我这个人的。当然,我也明白,他希望他手下的人能扎实完成工作,而不是提些有的没的。总之,我觉得他老了吧,大约。与之同时,一两个老兵,也教会了我代码设计上的一些东西,我也很感谢他们。rnrn除了氛围,一个就是远见的问题。我们这些当兵的混社会的,都希望跟着老大吃香喝辣,弟兄们把生命都交给你了,唯一的希望是你能负责。这也是我对公司的唯一要求。技术人的生命很短暂,过不了混饭的日子。我不知道公司到底有没有为我们员工设定了一个发展曲线,所以每当我一闲下来就很害怕。一闲下来,我就会拼命学习一些乱七八糟的东西,希望能跳出坑里,但我也明白营养不大。我背后有一个家庭,还有一堆琐碎的事,一些不通情达理的人,还有自己也不争气,我也知道自己在迂回战斗着,跑了很久,结果在原地打转。我渴望懂得更多东西,让自己变得更有价值,这是现在唯一能欺骗我还年轻着的借口了吧。rnrn所以,我十天半个月,就会想着离职,找工作,我太不专心了,但我觉得不只是我的问题。rnrn最近在看Joel在写的一本叫《软件随想录》的东西,虽然我觉得我在他面前充其量就一个SB吧,哈哈,但我还是觉得他说的一些东西很对。程序员应该学会写作,还有微观经济学,这才能让别人看到自己,而不是写着一堆优秀代码,然后让它们死在github或者sourceforge上。rnrn所以我考虑维护一下自己的博客:http://blog.csdn.net/gyj0754rnrn近期考虑把linux内核、linux驱动编程、android源代码分析和android编程的一些读书笔记共享一下。虽然这些内容或许网络上已经有人整理了,但出于训练、记忆强化和语言功底的磨练吧。写出来到底还是希望有人点评,毕竟只是一些未投入生产化的知识。rnrnrn不欢迎广告,讨论int,骂人,还有一开口就说不可能的人^_^
学习编程一年半心得体会
本人专业不是专攻计算机软件方面的 但是由于软件方向接触的比较早所以就开始了学习编程的道路,记得当时是因为我们专业软件实验室招收新生,自己其实当时对这个一点也不了解,看到大家都在刷题,自己也跟着刷,后面就剩我们几个人,所以进了这个实验室,踏上了学习编程的道路。   我记得开学半个月,还没开始刷题的时候,我们的c语言课程我上的是一脸懵逼,后面因为刷题所以训练了自己的c语言,但其实说对c语言很熟,谁...
我的一年半职场经历
在这里跟大家分享一下。rnrn[b]我的第一份工作,是刚毕业给学校老师做科研助理。[/b]在京都,每个月2000RMB。rnrn虽然这份工作赚的很少,但是工作机会确是我努力争取来的。我原本是数学专业的,突然觉得编程有趣就开始搞编程了,只看过一本《C++ primer》。大四下学期,为了得到参与项目的机会,我选修数据结构课程,考了个98分。凭借给老师留下的深刻印象,顺利混入项目组。老师给我布置了一到测试题目是让我用OpenGL绘制vtk文件。这个任务当时用了我接近半个月时间。当我第一次看到自己写的程序运行起来,屏幕上展示接近真实感的3D图像的时候,我就深深fall in love with编程了。我的编程生涯也是由此开始。rnrn加入项目组后,我编程速度让老师非常满意,慢慢变成项目组的主程序员。同时,我的进步也很大,从一开始的所有东西写在一个文件里,慢慢拆分成很多文件,接着根据功能抽象设计了类,读了一些OO的书,不断调整程序结构设计。我每天乐此不彼的修改着我的程序。现在回想起来,我当时连debugger都不会用,所有的调试都是用printf自己打印。(当然,很快我就学会用debugger了)rnrn后来项目的要求进展很快,而实验室只有我一个主程,每天应付不停修改的需求,各种各样开会,让我觉得越来越乏味。尤其是不停变动的需求,让我非常纠结。于是我开始研究如何高效设计程序,每天对着自己的UML图纸冥思苦想,想如何能预测老师的需求变化,那段日子纠结又充实。rnrn再后来,我发现了C++有好多现成的库可以用。于是我开始关注C++库,查看了一些vtk,CGAL,OpenMesh之类的库的文档。为了能让项目组其他人使用GUI。于是我又把MFC,Qt都简单学了学,把我的算法做成了小软件。rnrn工作到半年之后,我开始讨厌实验室的项目了。因为项目组的负责人(另外一个老师)不懂程序,是搞植物的,总是不断的让我赶工。另一方面,2000元的低收入,已经无法满足我的花费了(谈恋爱伤钱啊)。于是我想了一下,跟老师说,把科研助理的工作变为兼职,每个月给我1000就行了,然后我自己在校外找了一家游戏公司做实习。rnrn[b]我的第二份工作,就是在这家游戏公司。[/b]rnrn这家游戏公司是做2D游戏的。说起来我进公司时的面试,那是相当的顺利啊。当时我就不太认真的投了5封简历,然后接到了这个公司的面试电话。面试我的是公司两个技术主管。一开始说我本科毕业,实习起薪2500。后来我们深入聊了一些技术问题和软件工程问题。在我刚出公司门准备离开的时候,技术主管给我来了电话,说给我加到4000一个月,让我好好考虑一下。我当时还真是受宠若惊啊,哈。rnrn进了公司之后,一开始确实有很多不懂的,比如到底一个产品是怎么开发出来的,公司是怎么赢利的。不过这东西,其实说来也简单。在最初花了3,5天时间,熟悉了公司自己的框架之后,我就接到了第一个正式的项目。rnrn不过,也许是面试官对我评价颇高,进公司的第一个项目就是让我自己独立写一款棋牌类小游戏(貌似其他新新入职的都是先改现有的代码)。当时我一边看面向对象设计,一边分析游戏算法,搞得的不亦乐乎,还想出了一个复用性颇为强的牌类算法,然后找主管讨论了一下。主管被我的算法惊讶了一下,也同意我按照自己想法去弄。我当时超兴奋,因为我觉得这个算法如果能实现,实在是牛啊(现在想想,也就一般般吧)。当时我全部精力都放在这个算法设计上,不过越是范型的算法,实现起来越复杂,bug出现的可能性越高。当时我正好也在读Boost,于是就一边研究算法,一边用Boost.Test写了单元测试。不过,由于我的这种工作方式,导致项目的工期大大拖延了。也造成了高层的不满。但我个人从这个项目中收获颇丰,范型算法的设计,让我更深入理解了设计模式,单元测试的实践也让我对敏捷开发有所了解。rnrn接着,学校那边的工作结束了,公司这边我也从兼职实习转为全职。工资升到了6500。rnrn随后,我又开发了3款游戏,在这个期间,把《Boost完全开发》那本书给读差不多完了。当然也发生了一些不愉快,比如说,boss担心我开发速度慢,总是逼迫着我。于是我索性以最快速度完成了一个项目,远远提前于项目的截止日期。之后,我就有点无所事事,于是开始看书。也开始学了Python,emacs。另外和一个老师整了个开源项目再弄。rnrn我在公司最后接的一个项目,是自选引擎开发一款小游戏。这个项目学到了好多东西。我当时选择了用cocos2d-x,然后针对桌面游戏,对引擎代码修改了一番。为了游戏配置的灵活性,我把《learning lua》给看完了,然后给游戏加入了lua支持。最后做成了一个技术含量非常高的小游戏。我走后也让接到我这个项目的孩子感到淡淡的忧桑。(非常抱歉,我光顾着自己爽了)rnrn接着,我就辞职了!从3月开始到现在一直呆在家里。rnrn最近的计划是,6月份去深圳工作。rnrn[b]最后,我对我的经历简单总结一下吧:[/b]rn1,practice makes perfect。熟能生巧。写多了,自然框架什么的感觉就来了。rn2,认真去做每一件事情,会有超多的收获。学到超多的有趣技术。rn3,跟随自己的兴趣,就会活得很激情。rnrn好吧,大家开始拍砖吧。哈。
再问AnimateWindow的疑问。
在Form1的Button1Click事件里,如此设置form2的动画出现。rnAnimateWindow(Form2-> Handle,500,AW_SLIDE+AW_VER_POSITIVE+SW_SHOWNOACTIVATE);rnrn出现的问题:form2中的button、Edit等控件都不可见,只有lable控件可见。请问这是为什么?该如何解决。
急:再问AnimateWindow的疑问。
在Form1的Button1Click事件里,如此设置form2的动画出现。rnAnimateWindow(Form2-> Handle,500,AW_SLIDE+AW_VER_POSITIVE+SW_SHOWNOACTIVATE);rnrn出现的问题:form2中的[color=#FF0000]button、Edit等控件都不可见[/color],lable控件可见。只有在窗体被激活(处于active状态),button等控件才能显示,请问这是为什么?该如何解决。rn
一年半工作经验离职的第一天
工作一年半后离职的第一天 从培训班毕业后找到了第一家公司,干了一年半,从刚开始的打杂到后来的开发,然后出差,独 ...
一个工作一年半的程序员的自述(一)
一个工作一年半的程序员的自述 首先介绍下楼主的背景: 南京一所普通二本院校毕业,大学学的是与计算机无关的行业,14年毕业时决定进入计算机行业,并跨专业考计算机的研究生。半年时间,自学计算机考研的高数与计算机相关课程,组成原理,数据结构,网络,操作系统等,囫囵吞枣的略过,结果并不十分理想(进入哈工大复试,但因专业课成绩较差,未能考入本部)。   15年2月底来上海找工作,意向是java软件工
难难难难,再再问一遍
在使用office2000时不慎将其删除,我将注册表hkey-local-machine中的office文件夹和在安装盘中office文件夹也删除掉,但是还安装不上,除了重做系统外,还有什么高招。
如何在2000server下导入注册表?再问一遍!
这问题已经问了多少遍了,我以前备份了注册表,该如何安全导入?rn我以前导入时,在最后导入即将完成的时候提示“无法输入D:****\r.reg:访问注册表时出错”,安全模式也一样
痛苦地再问一遍,希望能有人响应!!
有一段代码是这样的rnrnPrivate Sub client_DataArrival(ByVal bytesTotal As Long)rnDim arrivedata As StringrnDim stringarray() As StringrnDim i As Integerrnclient.GetData arrivedatarnstringarray = Split(arrivedata, "?") constring = "driver=sql server;server=p2450;database=yubo"rncn.Open constringrnrs.ActiveConnection = cnrnrnIf rs.State = adStateOpen Thenrn rs.ClosernElsern searchstr = "SELECT * FROM 风粉温度 "rn rs.Open searchstr, cn, 2, 3rn If rs.BOF And rs.EOF Thenrn rs.AddNewrn For i = 0 To UBound(stringarray) - 1rn rs.Fields(i) = stringarray(i)rn Nextrn End Ifrn rs.Updaternrs.MoveLastrnText1.Text = Text1.Text & rs.Fields(0) & rs.Fields(1) & Space(5) & rs.Fields(2) & Space(5) & vbCrLfrnarrivedata = Emptyrnrs.ClosernSet rs = Nothingrncn.ClosernSet cn = NothingrnEnd Ifrn我意图用它来处理winsock控件服务器端定时发送过来的数据,将数据先存进yubo数据库的"风粉温度"表中,再在文本框内显示.运行以后,发现数据实际上没有写入数据库.为什么啊???rn
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法