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以为他们工作比我们勤奋。可惜,我们站的高,但没多少人能看那么远了。
  • 相关阅读:
    std thread
    windows更新包发布地址
    How to set up logging level for Spark application in IntelliJ IDEA?
    spark 错误 How to set heap size in spark within the Eclipse environment?
    hadoop 常用命令
    windows 安装hadoop 3.2.1
    windows JAVA_HOME 路径有空格,执行软连接
    day01MyBatisPlus条件构造器(04)
    day01MyBatisPlus的CRUD 接口(03)
    day01MyBatisPlus入门(02)
  • 原文地址:https://www.cnblogs.com/Linjianyu/p/1051319.html
Copyright © 2011-2022 走看看