zoukankan      html  css  js  c++  java
  • 在.net的世界,挂羊头卖狗肉

    很多人都说自己是.net程序员,问为什么,说是开发的网页是aspx扩展名的,又说用N层结构。
    首先来看一段代码:
    public static void Alert(object message)
            
    {
                
    string js = @"<Script language='JavaScript'>
                                alert('{0}');  
                              </Script>
    ";
                HttpContext.Current.Response.Write(
    string.Format(js, message.ToString()));
            }

    相信大家已经看出问题了,javaScript的部分我们先不讨论,单说这Response.Write。

    首先,必须肯定这个代码是可以运行的(不然就不会在项目中使用了)。显然,这种用法是不好的。虽然它可以运行,但是这段代码至少有两大罪状:
          第一,不符合xhtml的标准,response.Write会将数据写在<!DOCTYPE     ……    /〉的上面。
          第二,破坏文档结构,使界面不能按照预想效果呈现。
    其次,这种写法不符合asp.net的编程思想,asp.net试图将所有的东西都对象化,利用对象体系进行操作。所以,在asp.net中提供了一套注册脚本的方法(如:Page.ClientScript.RegisterClientScriptBlock,在asp.net ajax中使用 ScriptManager.RegisterClientScriptBlock)用这些方法,给人的感觉非常好,很OO。
    涉及到javaScript函数时,应将函数写在一个js文件中,然后去引用这个文件,再在代码中调用。

    现在,回过头来看里面的内容。里面的参数既然是object,问了下别人,才知道是为了让异常能直接做参数进行传递。我晕了,彻底的被他们给“征服了”。
         第一,异常既然直接alert给用户,我们给用户的应该是友好的信息,而将产生的异常给log下来。
         第二,弱类型。设计成object是为了既能传String又能传Exception.这个设计很糟糕,不说Exception这样传递过来显示没有意义,用了object就能传递其他任何的对象,就算是想传递这两种类型的对象,也应该用重载,不应该使用object.

    当然,在我接触的代码中,还有很多这种不合理的所谓.net代码。我开始就怀疑写这个代码的人是从asp转到asp.net的,一打听,果然是。

    这只是其中的一种,就是将asp中的开发模型或者方法、思路拿到asp.net中来用。典型的临床表现是:javaScript代码写在C#代码中,不用母版页用框架。

    还有很多种这类所谓的.net程序员了。大概是因为asp.net入门太容易了,所以这里面的水分就多的让人吃惊。不过这类人也不会混得太差,因为经过他们的无数次BT的if嵌套,也实现了多态的功能。而且他们写的程序大家都看的懂,但只有他自己才能维护,代码量又多的要命,让boss以为他们工作比我们勤奋。可惜,我们站的高,但没多少人能看那么远了。
  • 相关阅读:
    CGI(通用网关接口)
    PHP简介
    SEO搜索引擎优化/URL
    使用表单标签,与用户交互
    认识<img>标签,为网页插入图片
    使用mailto在网页中链接Email地址
    使用<a>标签,链接到另一个页面
    1037. Magic Coupon (25)
    1038. Recover the Smallest Number (30)
    1034. Head of a Gang (30) -string离散化 -map应用 -并查集
  • 原文地址:https://www.cnblogs.com/Linjianyu/p/1051319.html
Copyright © 2011-2022 走看看