SharpDevelop学习笔记(2)——体系结构

来源:互联网 发布:nginx 判断url参数 编辑:程序博客网 时间:2024/04/29 06:56
 

代码编辑器使用ArrayList结构来存储代码行,但是ArrayList是种插入慢的方式,因为每插入一行所有元素都要后移。后来作者试图使用列表结构虽然这种结构插入方便但又存在读取慢的缺点,从而作者不得不考虑使用线形数组,在行中插入字符会得到相当高的效率,因为它只影响一个单行。但若使整个缓冲区呈线形性,则会使插入变更变的相当慢,因为缓冲数组比行数组大的多。所以最终选择了基于行的结构。

下一个面临的问题就是语法的醒目显示。首先采取的对策是将单词分割并单独分配颜色。由于内置的语法醒目显示难以改变及维护,作者最终选择了在XML中定义语法醒目显示。

虽然老大英明神武但是它面对的问题也是越来越难。

第二关:编辑器的绘图速度太慢,每次滚动文本哪怕是一行都要重新绘制整个编辑器窗口。后又被英明的老大们通过一个了解文本大小的控件来解决掉了。但是却带来个代码行只有2718的问题。该问题1年内都没被解决。
各位可以考虑产生此问题的原因。

但是以上的结构还是存在很多问题,所以作者放弃了行方式回到了文本编辑器,又通过一系列努力解决了性能问题。大家可以一起探讨下。我们在后来再来进行总结。 

SD中明确的实现了XCopy部署(复制就可运行),并使软件可扩展及高灵活度。而作者使用插件(AddIn)方式来实现软件的灵活,并通过XML配置来实现XCopy的可能,从而此过程中从没有使用注册表。
下面SD的开发速度得到个质的提升,因为任何插件的开发都不影响已有功能的维护与其它功能的开发。
另外一个重要的问题是SD中使用了MVC模型。实现了视图与模型之间的通信,并可方便的切换视图。这个模型启发我们使用组件来开发,并最终导致了面向组件的决策。

SD的作者提供我们几条关于设计与重构的经验。虽然这些经验不是万能的灵丹妙药,但也确实包含了程序演变
的理念。重构规则有:
    1、若不理解—个方法,则将其分解为更小部分
    2、更容易理解的代码要优与性能更好的代码
    3、不厌其烦地进行重构(这正是我们国内ISV的一个很大的错误,我们往往不希望在重构上浪费时间。)
    4、不要想着在一天内完成所有的事情。
需求在不断变化,所以我们不要期待一劳永逸。最好先做一些简单的设计,随着时间的推移程序员水平的提高,再不断的进行重构。
    5、尽可能地使用断言
    6、从根本上解决问题

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 京东购物申请退款卖家不同意怎么办 京东申请退货退款卖家不处理怎么办 京东自营产品收货地址填错了怎么办 京东快递地址填错了怎么办? 拼多多网上购物收不到东西怎么办 网上购物己签收但东西不好怎么办 孩子在学校学习用具总是被偷怎么办 歌华有线欠费1个月怎么办 唐小僧倒闭了百姓投的钱怎么办? 手机号被别人注册了华为账号怎么办 华为账号手机号显示已被注册怎么办 买了鑫和陌车的怎么办 注册游戏账号时乱输入的邮箱怎么办 yy频道解邦不能开直播怎么办 淘宝的淘金币快过期了怎么办 乐透啦彩票让骗了6万怎么办 交了认筹金不能进抢购平台怎么办 爱奇艺会文学会员办了想退款怎么办 海淘信用卡入账但是砍单怎么办 褐色分泌物流了好几天了怎么办? 淘宝买的衣服一直不发货怎么办 从国外寄东西到国内被税了怎么办 百度网盘上传文件数量有限制怎么办 腾讯视频上传文件过限制大小怎么办 三星s7打网页又卡又慢怎么办 路由器的上网账号和口令忘了怎么办 小米笔记本移动热点连接不上怎么办 移动宽带密码重置后认证失败怎么办 移动光纤不记得账号和密码怎么办? 宽带为什么交了钱还是不能用怎么办 小孩被虎牙直播诱导支付了款怎么办 房间里4g网络信号差怎么办 移动4g网络信号不满格怎么办 大风号无法上传视频暂停服务怎么办 过了竞牌保证金交付时间怎么办 亚马逊产品上架后货物没到怎么办 工行企业网银证书过期了怎么办 海淘转运地址国家填错了怎么办 集装箱实重与申报重量不一样怎么办 微博复制的淘口令找不到了怎么办 买了移动手机不能用联通卡怎么办