英文原文:The Principles of Good Programming

  1. 避免重复原则(DRY - Don’t repeat yourself)

  编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就会很容易形成一个抽象体。

  2. 抽象原则(Abstraction Principle )

  与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。

  3. 简单原则(Keep It Simple and Stupid )

  简单是软件设计的目标,简单的代码占用时间少,漏洞少,并且易于修改。

  4. 避免创建你不要的代码 Avoid Creating a YAGNI (You aren’t going to need it)

  除非你需要它,否则别创建新功能。

  5. 尽可能做可运行的最简单的事(Do the simplest thing that could possibly work)

  尽可能做可运行的最简单的事。在编程中,一定要保持简单原则。作为一名程序员不断的反思“如何在工作中做到简化呢?”这将有助于在设计中保持简单的路径。

  6. 别让我思考(Don’t make me think )

  这是Steve Krug一本书的标题,同时也和编程有关。所编写的代码一定要易于读易于理解,这样别人才会欣赏,也能够给你提出合理化的建议。相反,若是繁杂难解的程序,其他人总是会避而远之的。

  7. 开闭原则(Open/Closed Principle)

  你所编写的软件实体(类、模块、函数等)最好是开源的,这样别人可以拓展开发。不过,对于你的代码,得限定别人不得修改。换句话说,别人可以基于你的代码进行拓展编写,但却不能修改你的代码。

  8. 代码维护(Write Code for the Maintainer)

  一个优秀的代码,应当使本人或是他人在将来都能够对它继续编写或维护。代码维护时,或许本人会比较容易,但对他人却比较麻烦。因此你写的代码要尽可能保证他人能够容易维护。用书中原话说“如果一个维护者不再继续维护你的代码,很可能他就有想杀了你的冲动。”

  9. 最小惊讶原则(Principle of least astonishment)

  最小惊讶原则通常是在用户界面方面引用,但同样适用于编写的代码。代码应该尽可能减少让读者惊喜。也就是说,你编写的代码只需按照项目的要求来编写。其他华丽的功能就不必了,以免弄巧成拙。

  10. 单一责任原则(Single Responsibility Principle) 

  某个代码的功能,应该保证只有单一的明确的执行任务。

  11. 低耦合原则(Minimize Coupling)

  代码的任何一个部分应该减少对其他区域代码的依赖关系。尽量不要使用共享参数。低耦合往往是完美结构系统和优秀设计的标志。

  12. 最大限度凝聚原则(Maximize Cohesion)

  相似的功能代码应尽量放在一个部分。

  13. 隐藏实现细节(Hide Implementation Details)

  隐藏实现细节原则,当其他功能部分发生变化时,能够尽可能降低对其他组件的影响。

  14. 迪米特法则又叫作最少知识原则(Law of Demeter)

  该代码只和与其有直接关系的部分连接。(比如:该部分继承的类,包含的对象,参数传递的对象等)。

  15. 避免过早优化(Avoid Premature Optimization)

  除非你的代码运行的比你想像中的要慢,否则别去优化。假如你真的想优化,就必须先想好如何用数据证明,它的速度变快了。

  “过早的优化是一切罪恶的根源”——Donald Knuth

  16. 代码重用原则(Code Reuse is Good) 

  重用代码能提高代码的可读性,缩短开发时间。

  17. 关注点分离(Separation of Concerns)

  不同领域的功能,应该由不同的代码和最小重迭的模块组成。

  18. 拥抱改变(Embrace Change)

  这是Kent Beck一本书的标题,同时也被认为是极限编程和敏捷方法的宗旨。

  许多其他原则都是基于这个概念的,即你应该积极面对变化。事实上,一些较老的编程原则如最小化耦合原则都是为了使代码能够容易变化。无论你是否是个极限编程者,基于这个原则去编写代码会让你的工作变得更有意义。

  作者简介:Christopher Diggins是加拿大一位有25年编程经验的资深技术人员,曾效力于Microsoft和Autodesk,并创办过两家盈利的互联网公司。

  他是《C++ Cookbook》的作者之一,并自己编写了一门编程语言Heron。

posted @ 2011-11-23 22:53 cm186man 阅读(15) 评论(0) 编辑
PE Explorer V1.99 R5 绿色汉化特别版 强大的可视化汉化集成工具

功能极为强大的可视化汉化集成工具,可直接浏览、修改软件资源,包括菜单、对话框、字符串表等; 另外,还具备有 W32DASM 软件的反编译能力和PEditor 软件的 PE 文件头编辑功能,可以更容易的分析源代码,修复损坏了的资源,可以处理 PE 格式的文件如:EXE、DLL、DRV、BPL、DPL、SYS、CPL、OCX、SCR 等 32 位可执行程序。 该软件支持插件,你可以通过增加插件加强该软件的功能, 原公司在该工具中捆绑了 UPX 的脱壳插件、扫描器和反汇编器,非常好用。
唯一遗憾的是欠缺字典功能……
点击这里下载文件
eXeScope V6.5 绿色汉化版

小巧但功能极其强大的本地化工具,可以直接修改 VC++ 及 DELPHI 编制的 PE 格式文件的资源,包括菜单、对话框、字符串和位图等,也可与其它本地化工具配合使用。
在汉化中不推荐使用 eXeScope 作为汉化工具,仅作为汉化辅助工具。6.50 版主要对 DELPHI 7 编译的程序支持较好,对 DELPHI 7 以前版本编译的程序,建议使用 6.30 版本,因为该程序对 Unicode 字符显示支持不好。
点击这里下载文件
Resource Hacker 3.4.0.79 官方简体

一个类似于eXeScope的但在某些方面比它还好一些的工具。1. 查看 Win32 可执行和相关文件的资源 (*.exe, *.dll, *.cpl, *.ocx),在已编译和反编译的格式下都可以。2. 提取 (保存) 资源到文件 (*.res) 格式,作为二进制,或作为反编过的译资源脚本或图像。图标,位图,指针,菜单,对话,字符串表,消息表,加速器,Borland 窗体和版本信息资源都可以被完整地反编译为他们各自的格式,不论是作为图像或 *.rc 文本文件。3. 修改 (替换) 可执行文件的资源。图像资源 (图标,指针和位图) 可以被相应的图像文件 (*.ico, *.cur, *.bmp),*.res 文件,甚至另一个 *.exe 文件所替换。对话,菜单,字符串表,加速器和消息表资源脚本 (以及 Borland 窗体) 可以通过使用内部资源脚本编辑器被编辑和重新编译。资源也可以被一个 *.res 文件所替换,只要替换的资源与它是同一类型并且有相同的名称。4. 添加新的资源到可执行文件。允许一个程序支持多种语言,或者添加一个自定义图标或位图 (公司的标识等) 到程序的对话中。5. 删除资源。大多数编译器添加了应用程序永远不会用到的资源到应用程序中。删除这些不使用的资源可以减小一个应用程序的大小。
点击这里下载文件
PASSOLO 7.0.01.1_绿色汉化修正版_功能强大的软件本地化工具

Passolo 是一款功能强大的软件本地化工具,它支持以 Visual C++ 、Borland C++ 及 Delphi 语言编写的软件(.exe、.dll、.ocx)的本地化。以往针对这两种不同语言编写的软件,我们大多是需要分别使用 Visual Localize 和 Language Localizator 来进行软件的中文化。而现在,Passolo 把二者的功能结合在了一起,并且性能稳定、易于使用,用户即不需要进行专门的训练,也不需要丰富的编程经验,在本地化的过程中可能发生的许多错误也都能由 Passolo 识别或自动纠正。作为专业性的本地化工具,Passolo 的功能主要包括:
- 支持 VC 软件新旧版本套用资源或字典的翻译中文化;
- 支持 Delphi 软件使用专用 / 通用字典翻译中文化;
- 利用已有的多种格式的 Passolo 字典对新建方案进行自动翻译;
- 对 VC 、Delphi 软件都支持标准资源的可视化编辑(酷!);
- 使用 Passolo 自带的位图编辑器可以直接对图片资源进行修改;
- 可以把目标资源导出后借用外部程序翻译后再重新导入。
Passolo 还自带了 XML 、.NET 、 VB 和 Java 等数种插件(Add-in),专业的编程人员可以借用它们对相应的资源文件进行本地化编辑。
点击这里下载文件
以上就是对EXE文件进行汉化,反编译,资源编辑中最常用的4个工具。
posted @ 2011-09-01 20:21 cm186man 阅读(53) 评论(0) 编辑

FFlimation

The FFilmation Engine is an AS3 isometric programing engine, focused mainly on game development. The aim of the project is providing a robust development platform, where game designers can work on the game’s details and forget about the render engine. It is intended to be really usable from a “real production scenario” point of view.

Fflimation 引擎是as3的二维(类似暗黑破坏神)引擎。主要用于游戏开发。这个项目的主要目的是提供一个稳定的开发平台,这样游戏设计师就可以忘记游戏渲染引擎把精力集中在游戏内容的细节方面。从“关卡制作”的角度来看,这个引擎的可用性非常的高。

pushbutton engine

The PushButton Engine is an Open Source, Flash game engine and framework that’s designed for a new generation of games. PushButton Engine makes it easy to bring together great existing libraries and components for building Flash games. Spend less time on code, more time on building fun games.

pushbutton引擎是一个开源的,flash游戏引擎,它所设计的框架结构提供了一种新的游戏形成机制。Pushbutton引擎集合了非常多的现存的制作flash游戏的库和组件。花很少的时间写代码,更多的时间用在制作有趣的游戏上面。

Citrus Engine

The Citrus Engine is a Flash sidescrolling platform. game engine built on the power of ActionScript. 3.0 and Box2D. The Citrus Engine was built to allow designers and developers to quickly and easily create platform. games (also called side-scrollers) like Super Mario Brothers. Teams can use the Citrus Engine for advergaming, marketing and casual games for game portals.

Citrus 引擎是一种基于as3和box2d的flash滚屏平台游戏引擎。Cirus引擎能让设计师和开发者非常快速的容易的创建滚屏平台游戏(又叫横版过关游戏)象超级玛丽。团队可以用citrus引擎给游戏门户制作广告游戏,市场推广游戏,搏逸游戏等等。

Yogurt3D

Yogurt3D Game Engine is a brand new 3D Flash engine that doesn’t require users to download plug-ins because it works inside your browser via Adobe Flash Player. Yogurt3D’s core part, SwiftGL, is open-source and compatible with OpenGL. This means developers who already program in OpenGL can easily develop 3D Flash games and applications. They can easily transform. their old OpenGL codes into SwiftGL and run their existing games in Adobe Flash.

Yogurt3D 游戏引擎是一款非常新的flash三维引擎,他不需要用户下载插件,因为他是通过浏览器中的flashplayer运行的。Yogurt3d的核心部 分,swiftgl,是开源并且与opengl兼容。这意味着有opengl开发经验的开发者很容易的就可以开发出3d flash游戏和应用程序。他还可以轻易的将opengl代码转化成swiftgl并在flashplayer中运行。


flixel

flixel is a completely free collection of Actionscript. 3 files that helps organize, automate, and optimize Flash games; an object-oriented framework that lets anyone create original and complex games with thousands of objects on screen in just a few hours.

flixel 是一款完全免费的as3文件集。它可以帮助你规划,自动的优化flash游戏。面向对象的框架可以让任何人在几个小时内制作出原创的复杂的,包含上千个物件的游戏。

posted @ 2011-08-18 23:27 cm186man 阅读(50) 评论(0) 编辑

    如果你的Windows7已经安装了支持Virtual WiFi功能的无线网卡驱动,你就会在控制面板\网络和 Internet\网络连接看见一个虚拟网卡,设备名字叫做:Microsoft Virtual WiFi Miniprot adapter。
    倘若你的系统没有这个功能,而且你的网卡是Intel,可以下载最新驱动程序【32位64位】,倘若都不是,系统自带的第三方驱动程序也可以支持(比如我的USB-TPLink,TL-wn321G)。 
    那怎么开始使用这张虚拟出来的网卡呢?我原先以为这种网卡跟真实的网卡没有两样,可是选择该网卡之后才发现它没有连接/断开选项,考证资料: 

引用
if the computer has a single wireless network adapter. This virtual device is used exclusively for performing software access point (SoftAP) connections


   才发现如果你只有单张无线网卡,那么这张虚拟的网卡只能是先做SoftAP,即软件虚拟的AP。这也就是说你可以把你电脑上的网络连接分享出来,实现路由器的功能。操作如下: 

  • 以管理员权限打开命令行窗口(开始->附件->命令行提示符,右键以管理员权限打开)
  • 输入:netsh wlan set hostednetwork mode=allow ssid=Windows7AP key=password  (ssid和password根据个人喜好自定)
  • 启动Adapter,输入:netsh wlan start hostednetwork
  • 最后在控制面板\网络和 Internet\网络连接中选择那个虚拟网卡(Microsoft Virtual Wifi miniport adapter)右键属性,选择共享项。选择一个已经存在的网络连接共享给它。
  • 如果你在其它机器中的无线网卡搜索可用网络时候,就会发现有一个AP是你之前创建的。 
  • 这样就是实现了网络分享。当然如果你觉得这些命令行操作很困难,有一个软件可以帮你搞定:Connectify. 该软件应该是封装了以上命令行的功能。
posted @ 2011-08-08 19:56 cm186man 阅读(53) 评论(0) 编辑
第一,在系统盘里进行搜索cmd.exe(或者直接通过文件夹路径:Windows\system32\cmd.exe),右键以管理员身份运行;

第二,在弹出的DOS框里,输入:netsh wlan set hostednetwork mode=disallow  然后会提示“承载网络模式已禁止”。此时,你打开网络共享中心,发现无线网络连接2已成功去除。

posted @ 2011-08-08 19:51 cm186man 阅读(464) 评论(0) 编辑

有的时候VS2010运行真的实在是太卡了, 奇卡无比, 下面几个技巧可以稍微让你觉得它没那么卡!!

一、VS2010选项视觉体验设置 
工具->选项->环境 
视觉体验的勾选都去掉。不解释,你懂得。(不过还是建议打开硬件加速)

二、禁用Intellisense 
工具->选项->文本编辑器->C/C++->高级 
禁用IntelliSense设为True 
这个功能很好用。相较于Visual Assist X,Intellisence结果更加准确,但活动也更加频繁,项目一庞大时修改头起来就会使VS变得很卡。

三、下载Windows 自动化 API 3.0 更新包 
微软安装说明: 
安装 Windows 自动化 API 3.0 后,Visual Studio 2010 的运行速度更快。 
如果未安装 Windows 自动化 API 3.0,则 Windows 笔和触摸服务会明显降低 Visual Studio IntelliSense 的性能 
已经禁用IntelliSense的话这个就没什么用了。 
下载页面:http://support.microsoft.com/kb/971513/zh-cn


四、关闭导航栏(不建议) 
工具->选项->C#->常规 
取消勾选导航栏 
导航栏还是相当好用的,我是不建议去掉他。

五、取消修订 
工具->选项->常规 
减少开销,加速IDE的反应

六、取消跟踪活动项 
工具->选项->项目和解决方案 
取消 在解决方案资源管理器中跟踪活动项

七、取消重构 
工具->选项->项目和解决方案 
EnableRefactoringOnRename设为False

八、禁用IntelliTrace 
IntelliTrace是VS2010的新特征 
默认启用并仅收集IntelliTrace事件。 
这个功能当然是相当有利于开发的,不过同时,资源的消耗也是必然的。
禁用方法,工具->选项->IntelliTrace

posted @ 2011-07-22 00:36 cm186man 阅读(97) 评论(0) 编辑
摘要: 剑客离不开剑,软件破解高手也离不开软件破解工具,合适的工具使你事半功倍,本文主要是介绍几种软件破解工具。 1.调试工具softice 2.调试工具Trw2000 3.反汇编工具Wdasm8.93 4.Hiew 5.Visual Basic程序调试工具Smartcheck 6.十六进制编辑器(如:Ultraedit、WinHex、Hex Workshop 等) 7.注册表监视工具RegShot、regmon或RegSnap 8.侦测文件类型工具TYP、gtw或FileInfo等 9. 脱壳工具PROCDUMP 10.调试工具IceDump 11.注册机制作crac...阅读全文
posted @ 2011-07-18 12:48 cm186man 阅读(100) 评论(0) 编辑
摘要: 以前一直在自己的台式机上win7 64bit上安装不不成功vs2010,尝试了几次也没有成功..经过一天的不断尝试, 最后成功了,在自己的笔记本win7 64bit的系统下安装好了vs2010, 所以分享一下以前出现的错误的信息情况: .net framework 4 中文语言包安装失败Microsoft Visual Studio 2010 64 位系统必备(x64): [2] Error: Installation failed for component Microsoft Visual Studio 2010 64 位系统必备(x64). MSI returned error code阅读全文
posted @ 2011-07-17 21:58 cm186man 阅读(246) 评论(0) 编辑
摘要: 角色扮演游戏(RPG)是深受广大游戏迷们喜爱的一种游戏, 它以独特的互动性和故事性吸引了无数的玩家。它向人们提供了超出现实生活的广阔的虚拟世界,使人们能够尝试扮演不同的角色,去经历和体验各种不同的人生旅程或奇幻经历。这些体验都是在现实生活中无法实现的。在玩过许多游戏后,许多玩家都不再仅仅满足于一个游戏玩家的身份,而会思考游戏是如何制作的,并且打算制作一个自己的游戏,网上的各种游戏制作小组更是如雨后春笋般涌现。下面我就给大家介绍一下角色扮演游戏引擎的原理与制作,希望能对游戏制作爱好者有所帮助。一、游戏引擎的原理说到引擎,游戏迷们都很熟悉。游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的阅读全文
posted @ 2011-07-02 21:56 cm186man 阅读(53) 评论(0) 编辑
    只有注册用户登录后才能阅读该文。阅读全文
posted @ 2011-07-02 21:44 cm186man 阅读(17) 评论(0) 编辑
    只有注册用户登录后才能阅读该文。阅读全文
posted @ 2011-07-02 21:33 cm186man 阅读(11) 评论(0) 编辑
    只有注册用户登录后才能阅读该文。阅读全文
posted @ 2011-07-02 21:24 cm186man 阅读(33) 评论(1) 编辑
摘要: 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。堆可以动态地扩展和收缩。 自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。 全局/静态存储区,全局变量和静态变.阅读全文
posted @ 2011-06-29 23:04 cm186man 阅读(15) 评论(0) 编辑
摘要: 方法一依次打开控制面板-外观-显示-更改配色方案-选择Windows 7 Standard-问题解决方法二1、鼠标右键单击“计算机”,选择“属性”。2、在页面左边选择“高级系统设置”。3、切换到“高级”选项卡,在“性能”栏按一下“设置”按钮。4、将“视觉效果”选为“让windows选择计算机最佳设置”或“调整为最佳外观”;最后按“确定”退出即可。方法三1、在开始搜索框中键入: gpedit.msc ,回车, 打开本地组策略编辑器。2、依次展开“用户配置”-“管理模板”-“开始菜单和任务栏”。3、在右边细节窗口,下拉滚动条,找到“关闭任务栏缩略图”项。4、双击打开,将设置改为“未配置”或“已禁用阅读全文
posted @ 2011-04-13 20:09 cm186man 阅读(90) 评论(0) 编辑
摘要: 下面谈到了一些在学习解密过程中经常遇到的问题,本人根据自己的经验简单给大家谈一谈。这些问题对于初学者来说常常是很需要搞明白的,根据我自己的学习经历,如果你直接照着很多破解教程去学习的话,多半都会把自己搞得满头的雾水,因为有很多的概念要么自己不是很清楚,要么根本就不知道是怎么一回事,所以希望通过下面的讨论给大家一定的帮助:   1. 断点:所谓断点就是程序被中断的地方,这个词对于解密者来说是再熟悉不过了。那么什么又是中断呢?中断就是由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。打个比方:你正在上班,突然有同学打阅读全文
posted @ 2011-02-16 19:13 cm186man 阅读(72) 评论(0) 编辑
摘要: 今天发现时间不对,同步时间后看到Windows系统默认是一周才同步一次时间,频率太低了。查找了一下资料,找到了两种调整Win7时间同步频率的方法。方法一:注册表法这种方法是通过修改注册表中的键值来达到同步目的。注册表键值:HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W32Time\\TimeProviders\NtpClient 下修改两个键值:SpecialPollInterval 从604800改为86400。这个键值意思是时间同步的间隔,单位为秒。 原来7天就是7*24*3600=604800秒。一天就是24*3600阅读全文
posted @ 2011-02-13 17:52 cm186man 阅读(164) 评论(0) 编辑
摘要: 最近有很多网站都这样流氓,一打开,就在桌面上强制显示一个多余的IE图标,无法删除这个问题可以通过桌面清理向导来搞定,但是精减版的系统往往把这一项功能给去掉了,大家可以试试通过下面的方法来找回 注册表方法:在开始运行中输入下面的命令即可.cmd /k reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoDesktopCleanupWizard /f 若上述方法不行请运行cmd /k reg delete "HKEY_LOCAL_MACHINE\SOFTWAR阅读全文
posted @ 2011-02-05 15:45 cm186man 阅读(72) 评论(0) 编辑
摘要: 安装APP的方法很简单,于是乎,有很多人都说是自己的原创……谁觉得自己是,那就是谁吧。另,此处提供的APP是修正版本。又另,想来想去,该不会有人不会知道APP是干嘛的吧?——简单的说,就是微软官方出品的一款可以在中文系统里将你看不懂的日韩、繁体游戏文字(俗称乱码)转为正常文字的软件。还是不懂?…………进入正题:在vista/win7下安装applocale的方法——点击开始->所有程序(All Programs)->附件(accessories),对“命令提示符”(Command Prompt)单击鼠标右键,选择以管理员方式运行(在高级选项里),确定。 例如你的applocale的安装文件是在阅读全文
posted @ 2011-01-28 19:44 cm186man 阅读(823) 评论(0) 编辑
摘要: Javascript是世界上最受误解的语言,其实C++何尝不是。坊间流传的错误的C++学习方法一抓就是一大把。我自己在学习C++的过程中也走了许多弯路,浪费了不少时间。  为什么会存在这么多错误认识?原因主要有三个,一是C++语言的细节太多。二是一些著名的C++书籍总在(不管有意还是无意)暗示语言细节的重要性和有趣。三是现代C++库的开发哲学必须用到一些犄角旮旯的语言细节(但注意,是库设计,不是日...阅读全文
posted @ 2010-10-23 14:28 cm186man 阅读(163) 评论(0) 编辑
摘要: 很多人把学习C++语言当成学习VC了,我曾经就走过这样的弯路。当学了很长时间的VC后还是得回过头来学习C++语言本身。 那么学习C++从何处入手了? C++语言相对于C语言来说引入了两个大的新东西,一个就是面向对象(具体来将就是类),另外就是模板技术(模板编程或者叫泛型编程是进来非常流行的技术,在C#中虽然还没有对泛型编程的支持,但是相信在将来也一定会加入这一功能),模板是C++中比较复杂的部分...阅读全文
posted @ 2010-10-21 23:50 cm186man 阅读(171) 评论(0) 编辑