Giter VIP home page Giter VIP logo

the-art-of-programming-by-july's Introduction

About

看过结构之法算法之道blog的朋友可能知道,从2010年10月起,July 开始整理一个微软面试100题的系列,他在整理这个系列的过程当中,越来越强烈的感觉到,可以从那100题中精选一些更为典型的题,每一题详细阐述成章,不断优化,于此,便成了程序员编程艺术系列。

原编程艺术系列从2011年4月至今,写了42个编程问题,在创作的过程当中,得到了很多朋友的支持,特别是博客上随时都会有朋友不断留言,或提出改进建议,或show出自己的思路、代码,或指正bug。

为了方便大家更好的改进、优化、增补编程艺术系列,特把博客上的这个程序员编程艺术系列和博客内其它部分经典文章同步到此,邀请各位一起修正和优化:若发现任何问题、错误、bug,或可以优化的每一段代码,欢迎随时pull request或发issue反馈,thanks。

Start Reading

How To Contribute

  • 添补剩下的章节,参考本书中文目录未完成的章节。「必选,没有文章有待同步:julycoding#182
  • 一章一章的测试所有代码,指正 bug,修正错误。 「必选,可到这里认领:julycoding#210
  • 优化原文章上的C/C++ 代码,优化后的代码可以放到ebook/code文件夹内,并注意代码命名规范的问题:julycoding#234 。 「必选」
  • 添加其它语言如Java、python、go 的代码,放在ebook/code文件夹内,同样如上,注意代码命名规范的问题。 「可选」
  • 重绘所有的图片:julycoding#80
  • 翻译成英文版,参考中文目录,把翻译后的文章编辑到这English Version,注:不必逐字翻译,精简大气即可(如有兴趣翻译,请到这里领取感兴趣的章节翻译:julycoding#84 )
  • 自己主导续写新的章节;
  • 任何你想做的事情,包括痛批你觉得写的烂的章节,所有你的意见都将改进此系列。

你可以做以上任何一件或几件事情,如遇到任何问题或疑惑,咱们可以随时讨论: https://github.com/julycoding/The-Art-Of-Programming-by-July/issues?state=open。 「如不知如何在github上提交及同步作者的更新,可参考此文:http://www.cnblogs.com/rubylouvre/archive/2013/01/24/2874694.html

Code Style

本项目暂约定以下代码风格(不断逐条添加中):

  • 关于空格
  • 所有代码使用4个空格缩进
  • 运算符后使用一个空格
  • "," 和for循环语句中的";" 后面跟上一个空格
  • 条件、分支保留字,如 if for while else switch 后留出一个空格
  • "[]", "."和"->" 前后不留空格
  • 用空行把大块代码分成逻辑上的“段落
  • C 指针中的指针符靠近类型名,如写成int* p,而不写成int *p
  • 关于标点
  • 中文表述,使用中文全角的标点符号,如:()、。,?
  • 数学公式(包括文中混排的公式)和英文代码,使用英文半角的标点符号,如:(),.?…
  • 关于注释
  • 注释统一用中文
  • 尽量统一用"//",一般不用"/*...*/"
  • 关于命名
  • 类名为大写字母开头的单词组合
  • 函数名比较长,由多个单词组成的,每个单词的首字母大写,如MaxSubArray;函数名很短,由一个单词组成,首字母小写,比如swap
  • 变量名比较长,由多个单词组成的,首个单词的首字母小写,后面紧跟单词的首字母大写,如maxEnd;变量名很短,由一个单词组成,首字母小写,如left
  • 变量尽量使用全名,能够描述所要实现的功能,如 highestTemprature;对于已经公认了的写法才使用缩写,如 tmp mid prev next
  • 变量名能“望文生义”,如v1, v2不如area, height
  • 常量的命名都是大写字母的单词,之间用下划线隔开,比如MY_CONSTANT
  • il < 4384 和 inputLength < MAX_INPUT_LENGTH,后一种写法更好
  • 一个函数只专注做一件事
  • 时间复杂度小写表示,如O(nlogn),而不写成O(N*logN)
  • 正文中绝大部分采用C实现,少量C++代码,即以C为主,但不去刻意排斥回避C++;
  • ..
  • 此外,更多C++ 部分可参考Google C++ Style Guide,中文版见:http://zh-google-styleguide.readthedocs.org/en/latest/contents/

有何问题或补充意见,咱们可以随时到这里讨论:julycoding#81

Ver Note

  • 2013年12月-2014年3月,Contributors 转移结构之法算法之道blog部分经典文章到本github上;
  • 2014年3月,通读全部文章,修正明显错误;
  • 2014年4月,精简篇幅,调整目录,Contributors 贡献其它语言代码,并翻译部分文章;
  • 2014年5月,逐章逐节逐行逐字优化文字描述,测试重写优化每一段每一行每一个代码,确定代码基本风格;
  • 2014年6月
  • 第一周,压缩篇幅,宁愿量少,但求质精;
  • 第二周,review all:julycoding#330
  • 第三周,将逐步转移到线下word 上继续修改优化,在word 上做出最后彻底的改进,与出版社编辑沟通重绘所有图片;
  • 第四周,最后review;
  • 6月30日,截稿,交给出版社。
  • 2014年7月..
  • 2014年8月..
  • 2014年9月..
  • 2014年10月...

Contributors

感谢所有贡献的朋友:https://github.com/julycoding/The-Art-Of-Programming-by-July/graphs/contributors ,并非常期待你的加入,thanks。

同时,欢迎所有已经贡献过本github的87位朋友加入程序员编程艺术室QQ群:149638123,验证信息为你贡献本项目时用的github昵称。

孤军奋战的时代早已远去,我们只有团结起来,才能帮助到更多更无数的人。@研究者July,始于二零一三年十二月十四日。

Copyright

本电子书的版权属于July 本人,严禁其他任何人出版,严禁用于任何商业用途,违者必究法律责任。July、二零一四年五月十一日晚。

July' PDF

the-art-of-programming-by-july's People

Contributors

julycoding avatar boshen avatar sallen450 avatar nateriver520 avatar marchtea avatar chanyuleung avatar ansvver avatar l2x avatar liuyongkang avatar liuyang1 avatar badnotes avatar lmdyyh avatar brickxu avatar jackingod avatar defp avatar frederick-s avatar catalystfrank avatar fengyie007 avatar t-benze avatar fz1989 avatar hejavac avatar cpcs avatar fairywell avatar cponyde avatar jayzeng avatar network061 avatar wuchong avatar ultimate010 avatar sumnous avatar ppggff avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.