每个程序都有很多的代码编织而成.为了获得最大的兼容性,你要从容面对每个系统.在这个问题上,DFL做的是最好的.今天,来学习下DFL的底层代码结构. 这些代码都在DFL的internal目录下.
当写了很多代码的时候,你会发现,你的类,函数该如何组织变成了一个非常重要的事情.D语言提供的模块和versin编译,很大程度上减少了你的麻烦.但太容易定义的模块,还有模块内的可见性,你可能无法更好的决定如何去分配和组织了.好的工具太容易被滥用了.这时候需要看看看代码结构的书籍了,当然,看实际应用就更容易让你了解代码如何组织了.慢慢的,经过你细心组织,大胆重构,消除过多依赖,或者环形依赖.而DFL,无疑是一个最好的代码组织例子.
目标:DFL可以应用在多种Windows操作系统.从Win95一直到WindowsVista.Chris还计划开发一个Linux版本.DFL也支持Phobos和Tango.DFL还可以用在D1和D2这两个版本上.兼容这么多库,要为整体提供很多好的抽象层次.否则,代码是很难组织的.也就是好的环境抽象.
1.Win32的导入函数:DFL的WinApi模块没有直接引用std.c.windows.windows,因为Tango没有这个模块.wincom和winapi一样,都是扩展了std.c.windows.windows,其实标准库实现的Win32导入太不完整,每个人都要自己引入很多Win32API,这种组织方法给大家提供了范本.
2.Tango和Phobos,将所有的基本库引用放在一起,并统一规定为一致的行为和参数和基本的类型系统:dfl.internal.clib统一了C库的引用,dfl.internal.dlib统一了D语言层次的类型,GC,字符串操作函数.这里Tango的版本众多,DFL都兼容了.仔细看看代码,实在高明:一群版本编译啊.可以看到Tango实在是不高明:每个版本的差异都存在,以至于要搞得这么复杂.这也是我目前不愿意用Tango的原因.
3.UTF支持.dfl.internal.utf, Win95,98是不支持宽字符的.必须要进行转换.即在调用代码前将D字符转换成ANSI的编码.这里可以选择使用静态的链接,或者动态链接到user32,kernel32,gdi32,advapi32.而在NT系列的系统上,使用宽字符的函数.以前写了写UTF的字符函数,看到这里才发现,Chris写的最好,也最全.如果你面对类似的Unicode问题,最好来这里看看.
结语:DFL的基础结构是我们面对多种库和系统的最好办法:将每个正交的功能组织到一个模块中.
当然,这里展示的仅仅是DFL的冰山一角,还有更多好的结构,期待您去发现.
希望与您分享!祝学习愉快!
分享到:
相关推荐
DFL-ST II工具是一款由磁动电子科技自主开发的专业ST硬盘固件修复工具,与深受大家喜爱和赞誉的DFL-WD为兄弟产品。 DFL-ST II工具主要针对市面上的7200.7-7200.10系列及11、12代的F3系列的ST硬盘而设计。DFL-ST II...
DFL210配置示例 DFL系列防火墙配置
DFL-DE是专业的数据恢复软硬件USB2.0设备,该组件能够对ATA,SATA所有硬盘进行数据恢复,该设备也能够对连接于DFL-WD的SATA端口使用48位寻址方式的硬盘工作,同也也可以对任何操作系统识别的存储装置进行数据恢复。...
DFL系列防火牆簡易安裝手冊 DFL-210,260,800,860,1600,2500 適用。
B/S结构(Browser/Server,浏览器/服务器模式):是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和...
DFL系列防火牆如果阻檔URL DFL-210,260,800,860,1600,2500 適用
DFL2调色插件 DFL2调色插件 DFL2调色插件
DFL-WD II Setup_CHS_V2.3.5
国际著名网络设备和解决方案提供商D-Link推出区域联防机制,并将其应用在新一代的安全产品--DFL-800/1600高性能 整合式防火墙中,不仅通过在网络安全设备之间建立互动机制,实现对网络安全设备的有效整合,将传统...
NULL 博文链接:https://godspeedhu.iteye.com/blog/423419
利用PAC及SVM进行人脸识别 即主成分分析以及支持向量机
TOSHIBA-TC55257DFL.pdf
DFL系列防火牆簡易安裝手冊 DFL-210,260,800,860,1600,2500 適用。
DFL系列防火牆簡易安裝手冊 DFL-210,260,800,860,1600,2500 適用。
dfl-20070907,Unicode DFL 包含Printting 博文链接:https://ideage.iteye.com/blog/117589
DFL系列防火墙PPTP功能的使用.pdf
DFL系列防火墙接入到ISP.pdf