`
kofsky
  • 浏览: 201693 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

一段给人两种不同感觉的代码

阅读更多
bool 
XmlRpcServer::bindAndListen(
int port, int backlog /**//*= 5*/)
...{
  
int fd = XmlRpcSocket::socket();
  
if (fd < 0)
  
...{
    XmlRpcUtil::error(
"XmlRpcServer::bindAndListen: Could not create socket (%s).", XmlRpcSocket::getErrorMsg().c_str());
    
return false;
  }


  
this->setfd(fd);

  
// Don't block on reads/writes
  if ( ! XmlRpcSocket::setNonBlocking(fd))
  
...{
    
this->close();
    XmlRpcUtil::error(
"XmlRpcServer::bindAndListen: Could not set socket to non-blocking input mode (%s).", XmlRpcSocket::getErrorMsg().c_str());
    
return false;
  }


  
// Allow this port to be re-bound immediately so server re-starts are not delayed
  if ( ! XmlRpcSocket::setReuseAddr(fd))
  
...{
    
this->close();
    XmlRpcUtil::error(
"XmlRpcServer::bindAndListen: Could not set SO_REUSEADDR socket option (%s).", XmlRpcSocket::getErrorMsg().c_str());
    
return false;
  }


  
// Bind to the specified port on the default interface
  if ( ! XmlRpcSocket::bind(fd, port))
  
...{
    
this->close();
    XmlRpcUtil::error(
"XmlRpcServer::bindAndListen: Could not bind to specified port (%s).", XmlRpcSocket::getErrorMsg().c_str());
    
return false;
  }


  
// Set in listening mode
  if ( ! XmlRpcSocket::listen(fd, backlog))
  
...{
    
this->close();
    XmlRpcUtil::error(
"XmlRpcServer::bindAndListen: Could not set socket in listening mode (%s).", XmlRpcSocket::getErrorMsg().c_str());
    
return false;
  }


  XmlRpcUtil::log(
2"XmlRpcServer::bindAndListen: server listening on port %d fd %d", port, fd);

  
// Notify the dispatcher to listen on this source when we are in work()
  _disp.addSource(this, XmlRpcDispatch::ReadableEvent);

  
return true;
}

 

这是XML RPC++ 里面的一段实现端口绑定与监听的代码。

两种完全不同的感觉:

1、非常完美,考虑非常完善,每一步都考虑了执行结果是否正确,根据每一步的执行结果来决定下一步的操作;

2、非常丑陋。真正执行的功能代码淹没在众多异常处理代码中;

分享到:
评论

相关推荐

    编码中的21种代码坏味道

    这时候你需要做的就是采用 Extract Method(110)提炼出重复的代码,然后让这两个地点都调用被提炼出来的那一段代码。 Long Method(过长函数) 拥有「短函数」(short methods)的对象会活得比较好、比较长。不...

    QQ空间留言代码-圣诞节快乐!.docx

    在提供的文档中,我们可以看到一段用于圣诞节祝福的QQ空间留言代码。这段代码由多个部分组成,每个部分都是一个单独的富文本格式指令,用于展示不同颜色和形状的星星、装饰以及文字。下面是对这些代码的详细解释: ...

    js实现幸运七源代码

    在"幸运七"的实现中,这个方法可能被用来不断更新页面上的数字或者元素状态,模拟数字7的滚动或者变换,给人一种随机性和动态性的感觉。这可能涉及到以下知识点: 1. **DOM操作**:JavaScript可以通过Document ...

    flash相册(含代码)

    综合以上信息,这个压缩包提供了一个完整的Flash电子相册解决方案,包括源代码和成品,对于想要学习或使用Flash制作网页相册的人来说极具价值。用户可以从中学到如何利用ActionScript(Flash的编程语言)进行动画...

    自己动手写操作系统(含源代码).part2

    而假如你真的因为我的书而重新燃起实践的热情,从而开始一段操作系统旅程,我将会感到非常高兴。 不过我得坦白,在写作《自己动手写操作系统》的时候,我并不敢期待它能引起多少反响,一方面因为操作系统并不是时尚...

    自己动手写操作系统(含源代码).part1

    而假如你真的因为我的书而重新燃起实践的热情,从而开始一段操作系统旅程,我将会感到非常高兴。 不过我得坦白,在写作《自己动手写操作系统》的时候,我并不敢期待它能引起多少反响,一方面因为操作系统并不是时尚...

    一个实用的七段数码管显示程序

    动态扫描是通过快速切换不同数码管的供电,使人在视觉上感觉所有数码管都在同时显示,从而节省硬件资源。静态显示则是每个数码管都有独立的控制线,始终维持所需显示的状态,这种方法显示效果更好,但需要更多的GPIO...

    算法文档无代码浅析队列在一类单调性问题中的应用

    文档中的“算法文档无代码浅析”可能意味着该文档并非是一段实际的代码,而是对算法理论和算法思想的阐述。这可以为不熟悉代码的人提供算法概念的深入理解,同时也帮助初学者建立起算法应用的直觉和感觉。 5. 百度...

    二十三种设计模式【PDF版】

    件,一段时间下来,发现不过如此,挺简单好用,但是你真正理解 J2EE 了吗?你在具体案例中的应用是否也是在延伸 J2EE 的思 想? 如果你不能很好的延伸 J2EE 的思想,那你岂非是大炮轰蚊子,认识到 J2EE 不是适合...

    PMV-PPD软件包

    描述中提到的“绘图功能”可能包括了温度分布图、舒适度曲线等,这些图表能够帮助用户分析不同条件下的舒适度变化,比如调整空调设置后对舒适度的影响,或者是不同季节、不同时间段的舒适度比较。 至于“压缩包子...

    MD5算法,感觉对初次接触的人 比较可以接受

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Rivest在1991年设计。它将任意长度的输入(也称为预映射)转换为固定长度的输出,通常是128位的二进制数,通常用32个十六进制数字表示。...

    Python每日一练(3)-输出编程三种境界

    例如,可以使用`time.sleep()`函数配合`for`循环来逐行显示诗词,给人一种动态滚动的感觉。 4. **滚动字幕输出编程三种之境界** 滚动字幕输出通常需要自定义函数来实现,通过不断更新屏幕内容和位置,模拟出文字从...

    卡牌抽奖特效(内含背景音乐,图片,代码)

    图片文件可能有正面和反面两种状态,用于显示未翻转和翻转后的卡牌。CSS文件将定义卡牌的样式和动画,而JavaScript文件将实现抽奖逻辑和音乐播放功能。 总的来说,这个卡牌抽奖特效展示了JavaScript、CSS3和...

    人物遥控无人机CSS3动画特效代码

    在IT行业中,CSS3是一种强大的样式表语言,用于描述HTML或XML(包括SVG、MathML等)文档的呈现。在本案例中,"人物遥控无人机CSS3动画特效代码"是一个利用CSS3的关键帧(@keyframes)规则创建的互动场景,它展示了戴...

    中断和数码管显示

    数码管有七段或八段,每段可以独立控制亮灭,通过不同组合可以显示出0-9的数字和一些字母。静态显示是将所有段选和位选线直接连接到单片机的I/O口,每个数码管显示时都需要占用多个I/O口。而动态显示则通过快速切换...

    单片机显示器及其接口2022优秀文档.ppt

    七段LED显示器是常用的LED数码显示器之一,使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一...

    octave 倍频程、1/3倍频程分析

    在本压缩包中,提供的Octave和1/3倍频程分析程序代码可以帮助我们理解并实现这两种分析技术。 首先,我们要了解什么是“倍频程”。在音乐和声学中,一个频率是另一个频率的两倍时,它们之间就形成了一个倍频程关系...

    一份纯CSS loading动画效果代码示例

    通过这种方式,两个内层元素不断旋转,形成一个交叉旋转的效果,给人一种持续加载的感觉。这种纯CSS加载动画的优点在于它既简单又轻量,对性能的影响较小,同时提供了良好的视觉反馈。 为了自定义这个加载动画,你...

    Swing模板样式(全56种经典)

    Swing支持两种主要的外观和感觉:金属(Metal)和系统(System)。金属主题是Swing的默认主题,具有简洁的蓝色风格;而系统主题则会跟随操作系统自身的GUI样式,例如Windows或Mac OS。除此之外,Swing还允许通过LookAnd...

    单片机课设.zip

    数码管通常分为共阴极和共阳极两种类型,每个数码管由7个或8个段组成(7段加一个小数点)。实现数码管显示的代码需要处理段驱动和位驱动,根据要显示的字符或数字,设置相应的段电平。在实际操作中,我们可能会使用...

Global site tag (gtag.js) - Google Analytics