• 项目总结 和语言总结。


    关于信息展示类

    数据展示类运用程序,不管是web还是navicate.大构架都可以运用mvc
    model:可以用弱类型。由 bll 或bll+dal来提供数据。
    view:可以用委托来分离数据,或行为。
    control:通过bll获得数据, 并实现view 的委托(函数指针回调)。

    程序的具体项目可以
    function项目:提供通用方法。 给各个层使用。所以包括
    1.给数据model层使用的数据访问帮助累。
    2.给view层使用的通用自开发控件。
    3.给control层使用的一些数据类型转换,io处理等通用方法。

    model项目:
    1.放业务逻辑数据模型。分为远程数据和本地文件数据。。如user. 单独model .单独bll。 如 mylocalsetting.公用或单独 model ,多个或一个类型在单独bll实现中。
    2.放系统通用数据模型。。如定义的一些数据结构。统一放入 model层。.buttoninfo. 公用model .分散 在 bll 中。

    bll项目:
    1.放业务逻辑数据,分为远程访问或本地配置数据
    2.生成默认的系统通用数据集合

    3.本地的一些数据,android 给出了一个很好的方案,就是本地xml文档,并提供了系统级的帮助。反观.net,并没有在某个项目中对本地数据给出系统级帮助。

    project项目:
    1.存放view 和control
    2.存放全局变量。
    3.帮助类。如公用ui,基类。
    4.资源文档

    关于类和静态方法。

    帮助类可以虚类加静态方法。

    一般类,应该是成员变量加普通方法。但是为了便于理解,可以强制把参数填入。 让函数明确输入和输出。

    对于类的实践,走过了成员变量+普通方法。  到全静态方法全参数,无成员,  ,再到 成员变量+明确方法参数的方法形式。


    关于全局变量。
    全局变量和枚举类型:
    有些是通用的全局变量。
    有些是只提供给某个项目使用。
    为省事,可以放到一起。 省的发精力分开文件。(纠正,很多项目都是分别放入到各自的类中。需要自己按空间类名去找全局变量。想想也是,模块很多的话,还是分开放到各自模块和类。)
    不能马上赋值的,必须在入口处赋予正确数据。

    非服务端程序,有一个比较 重要的点就是看这个 框架是如何处理,复用子界面,

    可以自定义ui的话。那么基本可以算作复用子界面了。

    至于模板。

    对于 垃圾自动回收语言 。

    最 重要的 是 理解 ,参数 传递过来的 是 指针 。由指针 修改 数据 ,是 会 影响实参的 。 而 直接给 指针赋值 ,对实参无效  。

    而且更主要的是 。要确认,当前类,是只需要一个指针就可以,还是需要在本类中拷贝一个数据 。必须仔细考虑。

    写代码要先考虑正确,合理,再考虑性能。

    数据库相关

    关联表的实体设计,可以不需要视图来辅助展示数据。所以关联表需要 访问被关联表的dal,并展示被关联表的数据。

    最好吧所有的sql放入到dal层来 扩展。bll最好提供更多的逻辑层面的参数的方法。

    充血还是贫血模式?

    没有所谓充血还是贫血,尽量的数据和方法在一起,就是正常的类,也就是所谓的充血模式,但是获得数据的方法,因为不同项目间不相同。所以获得数据的方法可以单独建立出来一个数据获得帮助模块。

    关于三层结构

    model 可以充血模式,但仅仅只涉及到本身数据的处理,必须是和外部无任何耦合

    dal,一一对应model,处理数据。

    bll,  首先要保证一一对应 dal. 因为model 首先就是实体的抽象,而实体就代表了逻辑的分类。

    当然如果有需要多个dal合作的逻辑,推荐新建立一个关联的逻辑模块为名字,如Login 的bll,可以取名字为user_Group 加入user ,group 等dal实体。

    关于异常

    自己终于体会到了异常的本质目的,自己的见解,

    一般异常写法

    1.底层不做任何处理,使用它的默认上抛行为。或者自己加点描述再上抛,上层固定捕捉,并显示。

    2.如果是不影响主体运行,可以try,catch不抛出,自己处理。

    3.非常特殊情况,出现异常,需要额外处理,清空数据啊什么的再抛出,一般是不需要,让最上层处理就可以。

    特殊如非托管资源,就最好用using(){} ,否则就必须try catch{手动释放函数}.

    出现异常的处理结果

    1.提示我们如何修正程序,处理某些未处理的异常。以便此异常处于我们的正确的逻辑处理中,以后不再显示。

    2.或者提示使用者修正使用行为。

    所以 在 .net 中 ,一般可以不处理异常,不处理是因为.net 已经帮我们做了 默认动作。就是上抛 和无人处理就显示出来。这个就是一个完备的处理流程,使用这么完备的异常机制的代价是0. 就是不用做额外工作。

    除非面对 非退管资源。最好 using(){}, 或异常时释放资源:try catch{手动释放函数}.

    .net  牛,最现代的语言.可惜没搞过 java.

    如何大改页面

    最好的方式就是沿着新写页面的方式来进行,把其他方式全部注释掉。一个方法一个方法写,测试。

  • 相关阅读:
    最近看代码查到的一些函数,稍作整理(2022.4.1)
    Pytorch的repeat函数
    随机数使用小技巧
    Pytorch的Normal
    OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.报错解决办法
    pytorch tensor索引中的none含义
    scheduled sampling 待完善
    Pytorch的nn.Sequential(*modules)中*的理解
    EOFError: Ran out of input报错解决
    conda安装包报错RemoveError:requests is a dependency of conda and cannot be removed from conda
  • 原文地址:https://www.cnblogs.com/lsfv/p/9467406.html
Copyright © 2020-2023  润新知