Anders Hejlsberg语录

Anders Hejlsberg语录
刚刚在http://www.artima.com/intv/handcuffs.html看到了这段话,我感觉这可能是中国程序员的一个比较明显的通病,贴在这儿,希望对大家帮助,最重要的是,提醒自己,不要再犯同样的错误。

If you ask beginning programmers to write a calendar control, they often think to themselves, "Oh, I'm going to write the world's best calendar control! It's going to be polymorphic with respect to the kind of calendar. It will have displayers, and mungers, and this, that, and the other." They need to ship a calendar application in two months. They put all this infrastructure into place in the control, and then spend two days writing a crappy calendar application on top of it. They'll think, "In the next version of the application, I'm going to do so much more."

Once they start thinking about how they're actually going to implement all of these other concretizations of their abstract design, however, it turns out that their design is completely wrong. And now they've painted themself into a corner, and they have to throw the whole thing out. I have seen that over and over. I'm a strong believer in being minimalistic. Unless you actually are going to solve the general problem, don't try and put in place a framework for solving a specific one, because you don't know what that framework should look like.

  Thursday, September 11, 2003 1:57 PM
 
反馈
# re: Anders Hejlsberg语录 9/11/2003 3:28 PM microhelper
关于日历控件,本想注册个账户之后向各位高人请教的,现在借宝地问一哈:
用一个textbox,一个button,一个calendar,一个验证控件组成一个日历控件,点button显示calendar,从calendar选择日期后,calendar隐藏,所选日期显示在textbox中,验证控件用来验证textbox中输入的是否为时间类型的值

现在遇到两个问题,第一个,我定义了一个属性TextValue(就是textbox中的值)然后用
[ValidationPropertyAttribute("TextValue")]来声明其为验证所用的属性,

我用一个验证控件来验证所输入的日期是否比当前日期大,validcontrol=myCal, myCal就是我自定义的控件,
但是每次要postbak回server端后才能验证出输入的日期是否大于当前日期,所以只好将validcontrol设置为myCal:txtDate,有没有办法来声明client端对日历控件的值验证时直接验证日历控件中textbox中的值?

 


# re: Anders Hejlsberg语录 9/11/2003 3:37 PM 害尔扑
第二个问题就是,为了calendar显示的时候不影响叶面的布局,所以降它的zindex设置为1000,但是因为select是windows control,所以还是没有办法盖住它,假设用window.popup的方式弹出一个菜单来显示calendar,又有点麻烦,还有没有其他可行的办法?

看到外国一些小公司做的日历控件,最贵的买到1000美元,几个控件就可以支撑公司了,在中国估计早就完蛋了

 

# 回复: Anders Hejlsberg语录 9/11/2003 10:25 PM blueinkstone
能不能卖得出你也看不见!或者只是个人产品。
在外国run一个公司没有中国这么复杂.

 

# 回复: Anders Hejlsberg语录 9/12/2003 8:25 AM 开心就好
第一个问题,在客户端可以使用JS的呀,你可以先把验证放在客户端,其实ASP.NET验证控件都是借助JS完成的。
第二个问题,见仁见智了,看你如何取舍了。

 

# 回复: Anders Hejlsberg语录 9/12/2003 9:54 AM microhelper
我的意思是怎么按照标准的方式来做,
比如一个RequiredFieldValidator控件,我把ControlToValidate属性设置为一个textbox控件myText,那么客户端生成<span = "..." controltovalidate="myText" ,

那么我把RequiredFieldValidator控件的ControlToValidate属性设置为我自己写的日历控件myCal,我希望RequiredFieldValidator控件知道需要验证的是日历控件中的textbox控件的值,而现在我只能这样设置:ControlToValidate="mycal:txtDate"

 

# 回复: Anders Hejlsberg语录 9/12/2003 10:00 AM 开心就好
我有些不是很明白,日期怎么可能是必填项目呢?
你看一下WebForm的日历控件,一上来就有一个默认值,即当天,而且除非你把它改成别的日子,系统始终会给其一个默认值。
我有一些明白你的意思,不过我建议你看一下WinForm在日历控件上的处理,它也是有两部分的,一部分是选择日期,一个是显示所选择日期的DropdownList,好象是叫DatePicker吧?

 

# 回复: Anders Hejlsberg语录 9/12/2003 11:33 AM microhelper
像这样子吧http://demos.deloittes.net/datepicker/default.aspx

但是那个文本框要求是可以输入的,选择时间时不要postback

 


# 回复: Anders Hejlsberg语录 9/12/2003 5:46 PM microhelper
但是上面这个控件有些问题,首先它对select也没有办法,还有算法有问题,生成的动态日历最后常常会多出一行来,而且还不支持designtime模式

 

# 回复: Anders Hejlsberg语录 9/12/2003 6:41 PM 开心就好
WinForm的基本上与你的要求很相像。
另外,它这是一个纯HTML+JavaScript的东西,你完全可以使用Web自定义控件去做,将这些JavaScript给输出到客户端。而且这样也很好的支持DesignMode。只要你愿意写Design时期的支持代码就可以了。
很多东西是体力劳动,想清楚它的实现原理后就需要浪费一下体力了。
建议你看一下别人的Web自定义控件的编码,在http://www.codeproject.com上有很多的好东东的,我们的严颢老兄就在上面发布了一个Web Panel的自定义控件,我现在一直在用。

 

# 回复: Anders Hejlsberg语录 9/12/2003 10:41 PM sungoodnews
到csdn上的asp论坛里找梅花雨的日历控件(一个纯客户端的Javascript控件),你会发现这就是你一直以来期待的

 

# From Yahoo 11/6/2003 1:18 AM Pingback/TrackBack
From Yahoo

 

# 回复: Anders Hejlsberg语录 11/7/2003 6:41 AM 韩磊
看得我一身冷汗!

 

# re: Anders Hejlsberg语录 8/6/2004 1:55 PM 快感
我也是在查找java的一些小程序看到你的帖子了 认识你也是大家的缘分 告诉你怎么实现判断一个用户输入信息的合法性
你去找一些正则表达式之类的东西~ 对你绝对有帮助的

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值