随笔分类 -  开发语言

[CodeComplete]创建一个函数需要理由吗
摘要:以下为<<代码大全2>>[第七章高质量的子程序]的摘录编程中什么是标准,相信大家都没有办法给出一套成系统的理论,而《代码大全》的作者就是在为我们描述从设计到实现诸多大家或意识到而没有深究,又或者还没有意识到的问题,通过系统的方式为大家展开了软件开发中诸多细节。希望对大家能都所帮助!本章探讨了以下问题:创建子程序的正当理由在子程序层上展开设计起个好名字子程序可以写多长如何使用子程序的参数使用函数时要特别考虑的问题什么时候使用函数,什么时候使用过程宏子程序和内联子程序 (内容不错)这里的子程序指的是完成一个特定目的的方法或过程,大家通常在什么状况下决定创建子程序?这个答案可 阅读全文

posted @ 2012-06-27 07:57 c语言源码 阅读(339) 评论(0) 推荐(0)

调试程序时在不中断程序的情况下输出函数调用信息(Mac OS,Linux & Windows)
摘要:转载请注明出处:http://blog.csdn.net/horkychen有时在查找问题时,不想中断程序运行就输出一下某个条件下的函数执行顺序可以帮助定位问题。在Xcode下可以编辑断点设置中的Action设为Debugger Command, 如果你使用GDB作为调试器(项目设置),然后输入backtrace如下:记得勾选"Automatically continue after evaluating", 这样程序就不会停在这个断点,而是继续执行下去。运行结果:#0 a (i=5) at /xxxx/TestBacktrace/main.c:20#1 0x0000000 阅读全文

posted @ 2012-06-25 21:54 c语言源码 阅读(255) 评论(0) 推荐(0)

TCMalloc:线程缓存的Malloc [Webkit有其应用]
摘要:作者:Sanjay Ghemawat, Paul Menage原文翻译:ShiningRayTCMalloc要比glibc 2.3的malloc(可以从一个叫作ptmalloc2的独立库获得)和其他我测试过的malloc都快。ptmalloc在一台2.8GHz的P4机器上(对于小对象)执行一次malloc及free大约需要300纳秒。而TCMalloc的版本同样的操作大约只需要50纳秒。malloc版本的速度是至关重要的,因为如果malloc不够快,应用程序的作者就很有可能在malloc之上写一个自己的自由列表。这就可能导致额外的代码复杂度,以及更多的内存占用――除非作者本身非常仔细地划分自由 阅读全文

posted @ 2012-05-23 10:00 c语言源码 阅读(290) 评论(0) 推荐(0)

JavaScript的面向对象设计
摘要:转载请注明出处:http://blog.csdn.net/horkychen依据W3C School的定义,Javascript是面向对象的语言, 虽然没有类(class),但到处是对象. 可以理解只有定义而没有声明, 直接用就行. 其中的每个对象都可以理解为一组Key-Value的组合.附上W3C School的说明:面向对象语言的要求一种面向对象语言需要向开发者提供四种基本能力:封装 -把相关的信息(无论数据或方法)存储在对象中的能力聚集 -把一个对象存储在另一个对象内的能力继承 -由另一个类(或多个类)得来类的属性和方法的能力多态 -编写能以多种方法运行的函数或方法的能力ECMAScri 阅读全文

posted @ 2012-05-12 00:27 c语言源码 阅读(190) 评论(0) 推荐(0)

圈复杂度评价及工具
摘要:转载请注明出处:http://blog.csdn.net/horkychen圈复杂度用来评价代码复杂度,以函数为单位,数值越大表示代码的逻辑分支越多,理解起来也更复杂。圈复杂度可以成为编码及重构的重要参考指标,以指导撰写可读性高的代码。有关圈复杂度的定义,可以自行搜索。《代码大全》有如下的定义:计算子程序中决策点数量的技术(代码大全2,19章P458)1.由1计数,一直往下通过程序。2.一旦遇到以下关键字,或者其同类的词,就加1: if, while, repeat, for, and, or3. 给case(switch)语句中的每一种情况都加1.作者也给了处理复杂度度量结果的建议:0-5: 阅读全文

posted @ 2011-11-21 16:18 c语言源码 阅读(1423) 评论(0) 推荐(0)

检查程序对动态库的依赖
摘要:转载请注明出处:http://blog.csdn.net/horkychen测试程序时会出现找不到指定的库或库函数的错误,表示某个依赖库不存在或版本不正确。如果使用的是动态加载的动态库所依赖的包不存在,如果程序没有做好异常处理的话,会让你很难定位到问题。比如GDI+库。假设一个程序A,调用了动态库B,而B链接了GDI+,这时运行在Windows 2000上时,系统里没有GDI+的库,会导致A不断Crash掉。因为GDI+库不是一般C的动态库,一般没有库加载的动作,使得排查问题会有很多的障碍。这时,我们如果利用依赖关系的查看工具就可以容易判断出来。在Linux中可以使用ldd指令很容易地获得依赖 阅读全文

posted @ 2011-11-02 00:16 c语言源码 阅读(813) 评论(0) 推荐(0)

[BoUML]用例图
摘要:使用BoUML可以轻松绘制用例图. *注意扩展关系的箭头(扩展了谁?),详细的有关箭头方向,可以参考:http://blog.csdn.net/TangZhongxin/article/details/4640248有些书上的箭头方向都会指错,读的时候要小心! 阅读全文

posted @ 2011-10-11 01:15 c语言源码 阅读(297) 评论(0) 推荐(0)

[BoUML]生成代码
摘要:此处简单介绍一下运用免费的UML工具Bouml生成C++代码。在BoUML中的各个视图和组件基本有以下的结构: Project -> View -> Diagrams -> Components每一个组件,比如类,在其设定对话框中都有一个语言属性。代码生成工具就是按其中的设定来生成代码。在BoUML中生成代码主要需要Class和Artifact的定义,其中一个Artifact代表了一组头文件和源代码文件,它可以包含一个或多个Class的定义。所以使用BoUML生成代码,主要注意以下几点: 1. Class中的语言声明。->和类的定义有关 2. Artifact的语言声明 阅读全文

posted @ 2011-10-07 13:24 c语言源码 阅读(640) 评论(0) 推荐(0)

数组的误用
摘要:原文地址: Teaching C++ Badly: How to Misuse Arrays我上次写了篇文章列举了我所看到的一些不好的C++教学,并且承诺详细地解释这些技术。这篇就是其中的第一篇。 我见到有归因于Trenchard More(*定义了More Array Theory)的断言,说数组是所有数据结构中最基本的一个。 事实上几乎没有哪个在世的程序员没有使用过数组。如果没有足够的证据,想象一下数组是一种线性寻址机制的抽象,它是所有计算机硬件通常使用的最基础的部分。线性寻址的想法认为计算机的内存由一组具有连号地址的存储单元构成。通过使用普通的整数来计算存储单元的地址,我们可以很容易从“ 阅读全文

posted @ 2011-06-22 14:36 c语言源码 阅读(164) 评论(0) 推荐(0)

较好的代码维护实践
摘要:在别人实现的基础上进行开发,基本是一种常态。特别是对原来的代码陌生的情况下,有没有什么好的实践方法呢?基本原则:类似重构一样,尽量减少对原有流程和结构的修改,最好能兼容原有结构。上来就按自己的相法来修改代是比较容易的,这样做很大程度是因为理解原有的代码需要较长的时间且有一定的难度,但这样会增加系统的复杂度,也会引入许多不必要的风险。除非得到项目负责人的同意,否则相当然的直接动手重写,绝非是什么好事!那么如何做呢?要花大量的时间从头阅读代码吗?你以为文档写得那么好吗?嗯,阅读代码和文档是免不了得,但需要有明确的目标和有序的安排。有效地控制各个阶段所关注的内容是成功的关键。过早的被许多的细节困扰会 阅读全文

posted @ 2011-05-18 22:33 c语言源码 阅读(136) 评论(0) 推荐(0)

《代码整洁之道》摘录---对象和数据结构
摘要:6.1数据抽象隐藏实现并非只是在变量之间放上一个函数层那么简单。类并不简单地用getter和setter将变量推向外间,而是暴露抽象接口,以便用户无需了解数据的实现就能操作数据本体。如下面是一个阅读器,需要获取当前阅读进度。接口定义如下: public interface PaperReader { double getTotalPages(); double getCurrentPageIndex(); }而较好的方式是: public interface PaperReader { double getCurrentProgress(); }添加取值及赋值操作是严肅的事。6.2数据、对象的 阅读全文

posted @ 2011-04-25 23:17 c语言源码 阅读(237) 评论(0) 推荐(0)

《代码整洁之道》摘录---格式
摘要:团队应该一致同意采用一套简单的格式规则,可以运用将这些规则自动化的工具。代码格式关乎沟通,而沟通是专业开发者的头等大事。或许你认为“让代码能工作”才是专业开发者的第一优先级。你今天编写的功能,极有可能在下一版本中被修改,但代码的可读性却会对以后可能发生的修改行为产生深远影响。原始代码修改之后很久,其代码风格和可读性仍会影响到可维护性和扩展性。即便代码已不复存在,你的风格和律条仍存活下来。向报纸学习看看写得很好的报纸。从上到下阅读,在顶部,有头条,告诉你故事主题。然后第一段是大纲,接着细节渐次增加。源代码应当一样,名称简单且一目了然。源文件最顶部应该给出高层次概念和算法。细节应该往下渐次展开,直 阅读全文

posted @ 2011-04-16 15:29 c语言源码 阅读(258) 评论(0) 推荐(0)

《代码整洁之道》摘录---注释
摘要:注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败。我们总无法找到不用注释就能表达自我的方法,所以总要有注释,这并不值庆贺。如果你发现自己需要写注释,再想想看是否有办法翻盘,用代码来表达。注释会撒谎。注释存在的时间越久,就离其所描述的代码越远,可能变得全然错误。原因很简单:程序员不能坚持维护注释。程序员应当负责将注释保持在可维护、有关联、精确的高度。我同意这种说法。但我更主张把力气用在写清楚代码上,直接保证无须编写注释。真实只在一处地方有:代码。只有代码能忠实地告诉你它做的事,所以应当减少注释。写注释的常见动机之一是糟糕的代码的存在。我们编写一个模块,发现它令人困扰、乱七八糟。我们告诉自己: 阅读全文

posted @ 2011-04-14 08:44 c语言源码 阅读(355) 评论(0) 推荐(0)

STL::List的对象存储与释放
摘要:写了一个小程序,来检查一下List中如何管理存储的对象。#include "stdafx.h"#include <list>#include <iostream>using namespace std;class MyClass{ public: int nMember; int * pMember; public: MyClass(void){cout<<"New my Class"<<endl;nMember = 0;pMember = &nMember;cout<<" p 阅读全文

posted @ 2010-10-17 22:13 c语言源码 阅读(345) 评论(0) 推荐(0)

小技巧:不显示打印对话框直接打印网页到打印机
摘要:找了一段时间,发现了MSHTML没有提供绕开打印对话框的方法。昨天试了下一个Windows Web Browser Control,居然可以了,下面做个记录:m_Browser.Navigate(sHttpAddress, &vtNULL, &vtNULL, &vtNULL, &vtNULL);m_Browser.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER,NULL,NULL);或许有人也会遇到这样的问题! 曾看过一些人提到的想法,还需要捕获到Printer Dialog,然后传送消息,有点麻烦。 阅读全文

posted @ 2010-10-10 21:25 c语言源码 阅读(329) 评论(0) 推荐(0)

导航