易截截图软件、单文件、免安装、纯绿色、仅160KB

Flex代码重构实录(1)

前言
    最近,正竭斯底里地重构flex技术平台开发的产品【wizBuilder CS】。以前为赶功能,界面部分代码都写得好乱,现在是时候修理下自己作的孽了,顺便为产品添加多语言支持(Localization)。
主要任务
代码重构
多语言支持
添加新功能、修改现有功能、去掉不合理的功能
修正重构过程中发现的Bug
实录
类内部重构
    去掉、合并多余的变量,把简单的方法合并,把复杂的方法差分,使方法内代码行数适中,属性和方法以private, public顺序定义访问修饰。
    去掉this.代码,偷懒的人都喜欢用this带出智能感知写代码,但是,重构时记得把类里所有的this.替换成空字符。为什么?如下:代码更简洁,编译出的swf更小,匿名方法时this会是致命的Bug源。
    以前我习惯m_Value的规则定义私有变量,但是,最近又觉得_Value的方式更优雅…少个字符的好处多多啊:少敲个字母,代码更简洁,编译出的swf更小。~.~!
提取工具类
    把经常用到的方法抽出来放到工具类,例如:PathUtil,StringUtil,DisposeUtil等。工具类建议是final修饰的,并且里面的方法最好全是静态方法static。
抽象出接口
    把经常用到的方法抽象出来接口来类约束类的行为,例如:IDispose(用于资源释放控制),IClone(用于数据复制,实现复制、粘贴操作时很好用),ISeriailze(数据序列化转换控制),ISelectable(容器子项选择控制),ILocalication(多语言支持控制)等,接口具体操作根据实际使用而定。
抽象出基类
    如果有几个类型概念很相似(属性和方法很相似),可以提取公共部分的属性和方法作为基类,公共的属性和方法以protected让子类访问。
解耦
    再次看回【wizBuilder CS】的界面层,发现海量耦合得很紧的代码,例如:A包含B、C,B包含A、C,C包含A、B,这样的结果是,ABC循环的制约着,维护起来很困难。目标是改成只有C 包含A、B的情况。
归类归包
    例如:类C 包含A、B,说明A,B,C是发生关联的3个类,可以把A,B,C放到同一个命名空间下,如果只是C给外界调用,那么把A,B声明为internal。爽!


相关文档:

flex学习 flex读取xml文件

源xml文件
 <?xml version="1.0" encoding="iso-8859-1"?>
<books>
<stock>
<name>The Picasso Code</name>
<author>Dan Blue</author>
<category>Fiction</category>
<description>Cubist paintings reveal a secret society of people ......

基于Flex的flv简易播放器

最近在项目中要用到flv播放器,由于flex自带的VideoDisplay组件不是很好用,就自己简单实现了一个,界面不是很美观,但功能都有了,正可谓麻雀虽小五脏俱全。下面是播放器的代码,还不会用flash做flv播放器的朋友,可以参考参考。
Player.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="ht ......

10 Tips for Flex Application Performance

We're going to keep this post lean and mean, and get down to
business with 10 Tips that will keep your Flex applications fast, lean,
and responsive.
Rule # 1: Clean up after yourself
In general, it is good practice to maintain clean code. Not only
in the sense of having properly formatted and ......

[转]flex中Popup窗口访问父窗口的4种方法以及相互传值


1.如果使用MVC框架,相信这并不是一个问题。而如果没有使用的话,可以用类似的方法设置一个单例,子窗口和父窗口通过这个单例来交互消息,如果需要解耦,请发送自定义事件。总之,只要按照MVC思路来做就可以了。
2.类似JS,在子窗口的构造函数里增加一个参数,将父窗口传参进去。MXML没有构造函数,用一个属性来保存父窗 ......

在FLEX Panel的Title上添加控件实例

一、自定义Panel组件
package test
{
    import mx.containers.Panel;
    import mx.core.UIComponent;
   
    /**
    * 自定义Panel
    * **/
    public class MyPanel extends Panel
  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号