搜索
查看: 15405|回复: 23

为什么 main.aardio 的代码应当简洁

  [复制链接]

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2013-11-6 12:31:36 | 显示全部楼层 |阅读模式
昨天晚上把 webform 的工程向导重构了一下,
大家可以更新一下对比一下,用前后两个不同的版本对比一下创建的工程有什么区别。

老版的web ui工程创建以后,main.aardio 默认有 95行代码。
如果你把折叠代码块全打开,看上去是不是有些眼花缭乱?!

而新版的web ui工程创建以后,main.aardio 仅 24行,如下:
  1. import win.ui;
  2. /*DSG{{*/
  3. mainForm = win.form(text="aardio工程4";right=700;bottom=469;border="none";mode="popup";title=false)
  4. mainForm.add()
  5. /*}}*/

  6. import config;  
  7. import web.form.util;
  8. if( web.form.util.getMajorVersion() < 11 ){ }

  9. //创建Web窗体并绑定控制器
  10. import controller;
  11. mainWb = controller.createWebForm( mainForm ,0x4/*_UIFLAG_NO3DBORDER*/ | 0x1/*_UIFLAG_DIALOG*/ ,,,true/*securityTrusted*/ );

  12. //启动嵌入式服务器,用于支持模板语法
  13. import wsock.tcp.simpleHttpServer;
  14. mainWb.go( wsock.tcp.simpleHttpServer.startUrl("/view/main.aardio") );  

  15. //网页无边框窗口响应标题栏、边框等事件
  16. import web.ui;
  17. web.ui( mainWb );

  18. mainForm.show()
  19. return win.loopMessage();  
复制代码
代码都被模块化了,大量堆砌在 main.aardio 的代码按功能和职责拆分到不同的用户库中了。
例如所有与网页控制逻辑有关的aardio代码全放到了 controller 这个名字空间下面,这个 controller 类似MVC里的控制器,里面的子模块自动与加载的网页对应 - 用于实现HTML界面的aardio控制器( 例如 /view/main.html 由 /lib/controller/main.aardio 实现控制器 )。

如果把一个工程比作一个房子, main.aardio 比作房子的大门,如果你进大门看到的就是所有杂物无序的堆在一起你会怎么想?你一定会想这个主人一定没有规划、东西喜欢乱放,里面一定更乱,时间久了就更加的乱,这就好像你的项目越写你越觉得混乱渐渐失去对代码的控制,最后你自己一看抓狂了看前面的代码都看不懂了,一团浆糊。

正确的方法就是进行合理的规划,模块化的组织代码,这个重构过程就类似于整理自己的房子,东西都不要乱堆在大门口了,衣服就整理好放到衣柜、衣架上,而书就都摆到书架上,垃圾就应当扔到垃圾桶里,食物放到厨房,所有东西分门别类的放好,代码也一样,根据功能用途、相关性分别放到不同的库、不同的名字空间里并组织好目录关系。

其实aardio对模块化支持的较好,这是aardio一个巨大的优势,但是很可惜, 不少的人并不重视这个东西,不理解为什么要这么去做。你去看其他人写的代码,至少是以工程方式写的代码(单文件就一个程序的不算),你看他的 main.aardio,如果他的 main.aardio 代码很多,而他的库模块很少,例如只有一两个或者根本就没有任何库模块,那这个代码的质量就可想而知不用多看了。

反之,如果你看到一个程序的源码,如果 main.aardio 里源码非常的短,而库的数目相对比较多,那这种代码你一定要仔细的去研究,因为能学到很多东西,就是认真看几篇,水平都会有显著的提升。

如果你再看一下这个工程里的js代码,用到了require.js,其实这个东西在aardio里使用,我们倒并不关心他的异步加载功能,因为在本地来说这可能是一个缺陷而不是优势,但是他有另外一个好处,可以很好的模块化代码,就是起到类似aardio的库模块作用。一开始你可能会说,我直接写个js函数多好,我干吗要去学这个复杂的加载器,这个你的项目多写一点代码,时间一长,你就会声泪俱下的感叹明白了好在哪里了。

所以大家现在应当可以回答我前面的问题了:
为什么 main.aardio 的代码应当简洁 ? 因为模块化代码比什么都重要。

评分

参与人数 5银币 +53 收起 理由
lightsmile + 5 赞一个!
2535163639 + 3 赞一个!
wclssdn + 20 大工程必须要模块化~
air_fans + 20 很给力!
ginus + 5 赞一个!

查看全部评分

回复

使用道具 举报

13

主题

108

帖子

732

积分

三级会员

Rank: 4

积分
732
QQ
发表于 2013-11-6 13:14:41 | 显示全部楼层

哎,我发布的那个项目,就做得不好,其实最开始都是写在main里面的,后来想分享的时候我才把那些代码抽出去的。

哎,我发布的那个项目,就做得不好,其实最开始都是写在main里面的,后来想分享的时候我才把那些代码抽出去的。
我是电车男!!!
记住!
我为人人,人人为我
想了解我名字由来请加QQ:502121980
回复

使用道具 举报

53

主题

277

帖子

1741

积分

四级会员

Rank: 6Rank: 6

积分
1741
发表于 2013-11-6 14:48:04 | 显示全部楼层

我的2000行的程序,main.aau占了300行,主要都是界面的消息函数. {:D}

我的2000行的程序,main.aardio占了300行,主要都是界面的消息函数.
回复

使用道具 举报

6

主题

59

帖子

581

积分

三级会员

Rank: 4

积分
581
发表于 2013-11-6 16:31:13 | 显示全部楼层

学习,谢谢分享

学习,谢谢分享
回复

使用道具 举报

3

主题

26

帖子

234

积分

荣誉会员

Rank: 8Rank: 8

积分
234
发表于 2013-11-6 18:19:59 | 显示全部楼层

我的貌似全部都在main.aau里,需要学习下用户库了

我的貌似全部都在main.aardio里,需要学习下用户库了
回复

使用道具 举报

7

主题

87

帖子

593

积分

三级会员

Rank: 4

积分
593
发表于 2013-11-6 20:56:49 | 显示全部楼层

看了Jacen大哥的话,收益匪浅又感慨良多,我就是因为喜欢把代码都堆积在一起,在后期维护或者交接工作的时候,都比较麻烦.无论是什么语言,都要学习Jacen大哥这

看了Jacen大哥的话,收益匪浅又感慨良多,我就是因为喜欢把代码都堆积在一起,在后期维护或者交接工作的时候,都比较麻烦.无论是什么语言,都要学习Jacen大哥这种方式.
本人男,爱好女!
http://www.hxcarrot.com
回复

使用道具 举报

3

主题

13

帖子

85

积分

一级会员

Rank: 2

积分
85
发表于 2013-11-7 03:41:20 | 显示全部楼层

赞~喜欢模块化

赞~喜欢模块化
回复

使用道具 举报

2

主题

12

帖子

90

积分

一级会员

Rank: 2

积分
90
发表于 2013-11-7 09:29:46 | 显示全部楼层

很好。。 我前两个小工具好多写到了main,目前在写的已经偿试模块化了。。。

很好。。 我前两个小工具好多写到了main,目前在写的已经偿试模块化了。。。
回复

使用道具 举报

0

主题

1

帖子

7

积分

新手入门

Rank: 1

积分
7
发表于 2013-11-7 10:16:46 | 显示全部楼层

Jacen,支持!

Jacen,支持!
回复

使用道具 举报

14

主题

42

帖子

379

积分

培训班

积分
379
发表于 2013-11-11 23:12:46 | 显示全部楼层

这是我的理想编码方式,目前在实践中修正自己的方案 其实任何资料数据的管理都应该按这个思想来处理 比如磁盘文件管理

这是我的理想编码方式,目前在实践中修正自己的方案
其实任何资料数据的管理都应该按这个思想来处理
比如磁盘文件管理
回复

使用道具 举报

0

主题

15

帖子

205

积分

二级会员

Rank: 3Rank: 3

积分
205
发表于 2013-11-12 08:15:08 | 显示全部楼层

化简的思想

化简的思想
回复

使用道具 举报

5

主题

74

帖子

465

积分

二级会员

Rank: 3Rank: 3

积分
465
发表于 2013-11-13 09:45:51 | 显示全部楼层

goodgoodstudy,daydayup~~~{:3_48:}

goodgoodstudy,daydayup~~~
回复

使用道具 举报

8

主题

125

帖子

850

积分

三级会员

Rank: 4

积分
850
发表于 2013-11-14 10:23:57 | 显示全部楼层

这个非常好,我之前写就是一堆在一起,后面想优化都非常累 支持

这个非常好,我之前写就是一堆在一起,后面想优化都非常累
支持
回复

使用道具 举报

0

主题

5

帖子

27

积分

新手入门

Rank: 1

积分
27
发表于 2013-11-16 19:13:32 | 显示全部楼层

化简的思想


化简的思想
回复

使用道具 举报

0

主题

34

帖子

190

积分

一级会员

Rank: 2

积分
190
发表于 2013-11-18 09:21:33 | 显示全部楼层

新手来学习架构

新手来学习架构
回复

使用道具 举报

5

主题

35

帖子

217

积分

二级会员

Rank: 3Rank: 3

积分
217
发表于 2013-11-24 14:25:48 | 显示全部楼层

嘿嘿,必需的.main的代码完成以后基本上是可以一直不动的.

嘿嘿,必需的.main的代码完成以后基本上是可以一直不动的.
回复

使用道具 举报

0

主题

34

帖子

190

积分

一级会员

Rank: 2

积分
190
发表于 2013-11-27 15:52:56 | 显示全部楼层

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=62699&ptid=11150][c

stillywud 发表于 2013-11-6 13:14
哎,我发布的那个项目,就做得不好,其实最开始都是写在main里面的,后来想分享的时候我才把那些代码抽出去 ...

赞一个
回复

使用道具 举报

0

主题

3

帖子

111

积分

一级会员

Rank: 2

积分
111
发表于 2013-12-2 21:06:42 | 显示全部楼层

谢谢分享呀

谢谢分享呀
回复

使用道具 举报

4

主题

19

帖子

122

积分

一级会员

Rank: 2

积分
122
发表于 2014-1-17 00:15:35 | 显示全部楼层

是个方向,值得研究。

是个方向,值得研究。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-15 17:24 , Processed in 0.093750 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表