`

从一道C++试题说起编程风格

 
阅读更多

       

          林锐的《高质量C++/C编程指南》是一本非常不错,非常有阅读价值的书,不管编程知识的传授,还是编程能力的培养,都算得上一本经典的教材。里面附录B更是作为不少公司招人时的笔试题目。笔者仔细看过这些题目,但是在对有些题目的看法,却是和标准答案不一样的,写出来,希望能引发对这些问题的讨论和商榷。

 

题目:



 

 

答案



 

 

当然,从语言的角度讲,这么说也似乎没有什么不对的,但是对从事商业软件开发十余年的笔者来讲,第一感觉却绝非如此。

 

笔者的拙见:

 

第一种方式程序简介算是一个优点,但是更要紧的是,condition可能是和循环计数器N相关的,可以很简单的思考一种场景:

 

for(int i = 0; i<N;i++)

{

   if( i %2==0)

   {

    //......

   }else

   {

      //.......

   }

}

 

这种场景下,是否只能使用这种循环方式?使用第二种方式显然是不成的。

 

       所以笔者的看法是,对于一些初学者和开发人员,看待代码的出发点,应该是更加注重代码的业务意义,以我个人的经验来说,代码就是用编程语言这个表达工具,把需要当成一个故事来讲述出来,怎样讲述故事能够让听故事看故事的人更加清晰明白,就怎样讲。

 

     并不是说风格、效率这些不重要,而是对开发者(尤其是初学者),传授给他们编程的知识的同时,也需要灌注一些开发的理念给他们,这时,最重要的理念就是代码需要清晰的表述业务,技巧再高,没有清晰的表述出业务来,也算不得高明。

 

  

 

    从这个角度来看,什么分层、框架,无非都是想让代码专注业务的一种手段和方式,但是很多开发者,都被这些东西搞晕了,说来也是很可悲的。我很欣赏石一楹的《代码味道》,还很欣赏《重构》,看过之后在实践中,逐渐清晰的领会到,味道也罢,重构也罢,只是工具层面的事情,无论何时,都要把目标紧紧放在心头,就是代码要清晰的描述你所要描述的业务。

 

   有了明确的目标,就像目标是渡过一条河,这个时候选择起来就会主动,比如选择渡船,选择桥,甚至选择游泳过去,无论何种方式,能用可接受的代价过去就是胜利。船也罢、桥也罢,只是工具,人使用工具,但是不被工具拘束住。

 

  我看很多计算机的教材,都是从语言本身,交给学生语言相关的知识,这当然没有错误,但是,如上所述,还是应该增加编程理念方面的知识,教给学生,应该怎样去写代码;什么样的代码是好的,什么样的代码要差一些。要从“是否清晰表述了业务”这个角度来评判代码。

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 47.7 KB
  • 大小: 66.6 KB
1
0
分享到:
评论
5 楼 lzylzy188 2016-05-06  
这个题目我认为没有什么问题,首先题目本身就是前提条件,就好像数学的证明题,前面题干已经告诉你当x>5时......,那么我们在看待这道题的时候自然是只考虑x>5的情况,楼主说的情况虽然实际开发中非常多,但其实与题干的已知条件并不相符,就好像你非要谈论一下x<=5的情况怎么办?没这个必要!在我看来这道题目的意义是为了让初学者体会程序运行的过程,一步一步的都执行了什么,然后通过对两种方式的执行过程进行比较来总结出双方的优劣,进而让学者自行体会在处理逻辑的时候如何写才能提升效率,这是一个举一反三的过程,并不仅仅局限于题目本身的这种模型。
4 楼 windshome 2013-03-28  
1440580 写道
for(int i = 0; i<N;i++)
{
   if( i %2==0)
   {
    //......
   }else
   {
      //.......admin 一个 数据库的连接配符号。楼主我现在有个疑问





   父目录:ADMIN 操作权限}ADMIN
子目录 代理 分级 XXX 现在C段权限 我想越过父目录能否前端操作或者什么方式运行求指教}

能否清楚描述一下,没有看明白
3 楼 1440580 2013-03-28  
for(int i = 0; i<N;i++)
{
   if( i %2==0)
   {
    //......
   }else
   {
      //.......admin 一个 数据库的连接配符号。楼主我现在有个疑问





   父目录:ADMIN 操作权限}ADMIN
子目录 代理 分级 XXX 现在C段权限 我想越过父目录能否前端操作或者什么方式运行求指教}
2 楼 windshome 2013-03-18  
ksqqxq 写道
教科书交给了我们怎么使用语言,不会告诉你怎么才能合适准确的使用。这才是一个人能力的体现。


回复ksqqxq:的确如此,但是这也是一种传统观念,为什么不能在学习过程中,就传递怎样合适的使用语言的知识,培养这个能力呢?我觉得这是一个改进的方向,虽然很不容易。
1 楼 ksqqxq 2013-03-16  
教科书交给了我们怎么使用语言,不会告诉你怎么才能合适准确的使用。这才是一个人能力的体现。

相关推荐

    google-c++编程风格(高清版).pdf

    Google C++编程风格指南 Google C++编程风格指南是由Google公司编写的一份C++编程风格指南,旨在帮助C++程序员编写高质量、易于维护的代码。该指南涵盖了C++编程风格的各个方面,包括头文件、作用域、C++类、智能...

    C++编程思想原版pdf

    C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想...

    C++ C#混合编程

    在IT行业中,C++和C#是两种广泛使用的编程语言,它们各自有着独特的优势和应用场景。C++以其高效、低级特性和强大的面向对象能力在系统编程和游戏开发等领域占据重要地位;而C#作为.NET Framework的一部分,适用于...

    c与c++嵌入式系统编程(CLH)

    c与c++嵌入式系统编程(CLH)c与c++嵌入式系统编程(CLH)c与c++嵌入式系统编程(CLH)c与c++嵌入式系统编程(CLH)c与c++嵌入式系统编程(CLH)c与c++嵌入式系统编程(CLH)c与c++嵌入式系统编程(CLH)c与c++嵌入式系统编程(CLH)...

    c++ 编程风格的规范化

    c++ 编程风格的规范化 规范化你的c++编程风格 规范化的风格 大量的例子和注释

    C++多线程编程.pdf

    C++多线程编程

    Google C++编程风格指南

    高级工程师Dan sanderson将向你讲述如何设计高可伸缩性应用程序的方法,以及如何使用App Engine的API和可伸缩的服务来实现常见的开发任务。你将会学到有关App Engine的应用程序服务器架构、运行时环境以及可伸缩数据...

    《 C++模板》和《C++模板元编程》两本

    C++模板元编程(Template Metaprogramming,TMP)则是利用模板在编译期间进行计算的一种技术。《C++模板元编程》这本书则专注于这一主题,介绍了如何编写能在编译时执行逻辑的模板代码。TMP允许开发者创建编译时的...

    历年自考c++试题答案及教学源码

    C++是一种强大的、通用的编程语言,被广泛用于软件开发、系统编程以及各种复杂应用的构建。它由Bjarne Stroustrup在1983年设计,是C语言的一个扩展,增加了面向对象编程(OOP)的概念。自考C++试题及答案是自学过程...

    visual C++ 6.0 高级编程

    visual C++ 6.0 高级编程visual C++ 6.0 高级编程visual C++ 6.0 高级编程visual C++ 6.0 高级编程

    C++高效编程网页版

    9. **C++11及更高版本的新特性**:从C++11开始,语言引入了许多新特性,如右值引用、lambda表达式、自动类型推断(auto关键字)、并发编程工具等,这些都极大地提升了C++的现代性和易用性。 10. **调试与测试**:...

    C++多线程编程实战

    C++多线程 windows

    C++ 编程风格指导

    ### C++ 编程风格指导 #### 一、概述 《C++编程风格指导》这本书是一本关于C++面向对象程序设计的专业教材。它由李涛主编,游洪跃、陈良银、李琳共同编写,并得到了国家自然科学基金以及四川大学精品课程建设基金...

    提高C++性能的编程技术.pdf

    ### 提高C++性能的编程技术 #### 一、引言 在《提高C++性能的编程技术.pdf》这份文档中,作者强调了基础对于编程的重要性,并通过个人经历阐述了为何掌握诸如离散数学、算法与数据结构、操作系统、计算机体系结构...

    c++常用编程软件:Dev c++

    c++常用编程软件:Dev c++c++常用编程软件:Dev c++c++常用编程软件:Dev c++c++常用编程软件:Dev c++c++常用编程软件:Dev c++c++常用编程软件:Dev c++c++常用编程软件:Dev c++c++常用编程软件:Dev c++c++常用...

    C/C++高级编程pdf

    《C/C++高级编程》是深入探讨这两种编程语言精髓的重要资料,主要针对已经掌握C/C++基础的开发者,旨在提升其在编程领域的专业技能。在这个领域,类的构造与指针的使用是核心且复杂的主题,它们是理解和利用C/C++...

    C++并发编程实践 C++ Concurrency in Action

    ### C++并发编程实践 #### 一、简介与并发编程基础 《C++并发编程实践》这本书由Anthony Williams编写,是一本深入讲解C++多线程编程技术的专业书籍。本书旨在帮助读者掌握C++中的并发编程技巧,并通过大量的示例...

Global site tag (gtag.js) - Google Analytics