Giter VIP home page Giter VIP logo

zh-google-styleguide's Introduction

Google 开源项目风格指南——中文版

Note

声明

本项目并非 Google 官方项目,而是由国内程序员凭热情创建和维护。

如果你关注的是 Google 官方英文版,请移步 Google Style Guide

每个较大的开源项目都有自己的风格指南:关于如何为该项目编写代码的一系列约定(有时候会比较武断)。当所有代码均保持一致的风格,在理解大型代码库时更为轻松。

“风格”的含义涵盖范围广,从“变量使用驼峰格式(camelCase)”到“决不使用全局变量”再到“决不使用异常”,等等诸如此类。

英文版项目维护的是在 Google 使用的编程风格指南。如果你正在修改的项目源自 Google,你可能会被引导至英文版项目页面,以了解项目所使用的风格。

我们已经发布了七份 中文版 的风格指南:

  1. Google C++ 风格指南
  2. Google Objective-C 风格指南
  3. Google Python 风格指南
  4. Google JavaScript 风格指南
  5. Google Shell 风格指南
  6. Google JSON 风格指南
  7. Google TypeScript 风格指南

中文版项目采用 reStructuredText 纯文本标记语法,并使用 Sphinx 生成 HTML / CHM / PDF 等文档格式。

zh-google-styleguide's People

Contributors

acgtyrant avatar alvisisme avatar bean-zhang avatar captainfffsama avatar daviddengcn avatar district10 avatar endaye avatar frank120330 avatar gmle avatar ilcc avatar jinhaiz avatar kenkangxgwe avatar louyu2015 avatar lzx1413 avatar m-final avatar mq-b avatar neeyongliang avatar np-csu avatar rainorz avatar red-flower avatar robotchaox avatar rustyhu avatar ryanzhinie avatar tobedefined avatar xianfeng92 avatar xr1s avatar xuxinkun avatar yangyubo avatar yanwq-monad avatar zhangyu0310 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zh-google-styleguide's Issues

请问你们有相关的C++插件吗?

zh-google-styleguide的工作人员你们好:
你们有这样的插件吗?
当你的编码不符合谷歌要求的编码风格,他会让编译器弹出警告,并要求你修改

如图:
image
这个是阿里巴巴的Java 规约插件https://github.com/alibaba/p3c

有没有谷歌C++代码规约的插件呢?帮助我养成良好C++编码风格。

感谢!

链接丢失

  1. 作用域
    2.1. 命名空间
    结论
    命名空间命名
    的链接已经失效,麻烦重新链接,谢谢~

关于译注的建议

2.4 局部变量中, 个人觉得可以在增加译注: 关于Warning
开销: (循环内构造 + 析构) > (块外定义 + 赋值)
我觉得一言蔽之是不合理的, 我们应该合理分析一下成本:

构造 + 析构: n * (construct + destruct)
块外定义 + 赋值: n * assignment

哪个开销更高, 我们应该具体衡量, <Google C++ Style Guide>翻译的挺不错的
但是 , 能够加上我们译者的具体建议, 不是更好吗 ?

相关内容: 可见<Effective C++> Item 26

建议修改项目链接

项目链接是zh-google-styleguide.readthedocs.org/,但是这个文档比较旧了,README中的链接为google-styleguide.readthedocs.org/,这个是最新的文档,有Javascript风格指南。建议将项目链接修改为google-styleguide.readthedocs.org/

reStructuredText格式转换为markdown格式过程中的问题及解决方法

reStructuredText格式转换为markdown格式过程中的问题及解决方法

Q: 为什么要把reStructuredText格式转换为markdown格式?

  1. 在当前版本中大量存在中英文标点混用的情况(逼死强迫症:D),既然本项目致力于将英文版翻译为中文版,强烈建议使用统一的中文标点,而使用统一的中文标点会造成Sphinx解析格式错误,参见#30 。对于markdown格式目前没有这类解析格式错误。
  2. markdown格式相对reStructuredText格式使用的人更多,入门门槛较低,也便于中文版本格式维护。

Q: 你计划转换本仓库的哪些部分?

基于个人兴趣和时间因素考虑,我仅计划转换《Google C++风格指南》这一部分,其他部分暂无计划,希望有同样兴趣的GitHuber能接力完成剩下部分的格式转换。

Q: 你将如何实现reStructuredText格式到markdown格式的转换?

基于对各种自动化、半自动化转换工具的不信任,我将采用纯手工这一最原始的方式进行转换,如果你有任何理想的转换工具推荐,请@我进行推荐。

Q: 转换工作包括哪几步?

  1. 在不改变文本内容的前提下,将rst格式转换为md格式。
  2. 统一文件中的标点为中文标点。
  3. 修正个别翻译不通顺的语句。

Q: 提这个Issue的原因是什么?

在转换的过程中必然会遇到一些问题,也会针对这些问题寻求大家的帮助,以便找到解决问题的方法。我计划把转换过程中遇到的问题都记录在此Issue中,在转换工作完成后,如果时间允许,计划将此Issue中的问题与解决方法进行整理,方便以后有其他人计划将reStructuredText格式转换为markdown格式时能从此Issue中获得灵感。

Q: 怎么查看正在进行中的转换工作?

所有的转换工作都在ilcc/zh-google-styleguide仓库的feature-markdown分支中进行。

Q: 怎么联系你?

如果你对转换工作有任何的建议和意见,请在此Issue中留言,并@ilcc方便我及时了解你的想法和建议。

大量 Title underline too short 告警

大部分文本编辑器 (包括 OS X) 为了优化汉字显示, 实际上汉字占宽是英文的 1.5 倍, 但是实际上 sphinx, reStructuredText 和 Terminal 等, 都内部将汉字解析成 2 倍英文字符宽度.

所以文本编辑器显示的时候是 header 和下划线是左右对齐的, 但是实际上内部解析是不对齐的.

我通常的解决方法是下划线对齐后, 再增长至 2 倍或 1.5 倍.

7. 注释
------
/home/docs/checkouts/readthedocs.org/user_builds/zh-google-styleguide/checkouts/latest/google-cpp-styleguide/comments.rst:9: WARNING: Title underline too short.

scoped_ptr 已经过时?

5. 来自 Google 的奇技 一文的 译者注 中,译者认为 scoped_ptr 已经过时。但是实际上 scoped_ptr 现在依然是一种行之有效且非常好用的手法,只是不知道为什么标准库没提供而已。

尽管 shared_ptr 看起来是未来,但是事实上 shared_ptr 有很多坑 1 ,而且在多线程中表现不佳,所以我认为译者注的第三条应当去掉

[注1] C++ shared_ptr四宗罪(不得不转)

能否生成PDF文档并放到github

下载了所有的code,但是编译出错. 能否把编译好的PDF放到网站上.谢谢

zh-google-styleguide$ make latexpdf
sphinx-build -b latex -d _build/doctrees . _build/latex
Running Sphinx v1.6.3

Exception occurred:
File "conf.py", line 23, in
import sphinx_rtd_theme
ModuleNotFoundError: No module named 'sphinx_rtd_theme'
The full traceback has been saved in /tmp/sphinx-err-aufw9_0q.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at https://github.com/sphinx-doc/sphinx/issues. Thanks!
Makefile:101: recipe for target 'latexpdf' failed
make: *** [latexpdf] Error 1
zh-google-styleguide$ which python

离线的其他格式在哪里啊

中文版项目采用 reStructuredText 纯文本标记语法, 并使用 Sphinx 生成 HTML / CHM / PDF 等文档格式.

我没有找到啊,请问PDF文档在哪啊
另:谢谢翻译,看英文好吃力

6.19 `auto`,C++14似乎auto已经可以正确推导列表初始化的类型

New Rules for auto deduction from braced-init-list

#include <cstdio>
#include <typeinfo>
#include <initializer_list>

int main() {
    auto var{100};
    //  auto var_list{100, 200}; //  compile error
    std::initializer_list<int> lst{100};
    printf("%s\n", typeid(decltype(var)).name());
    printf("%s\n", typeid(decltype(lst)).name());
}

----------- OUTPUT -------------
C:\Users\jcong\CLionProjects\untitled\cmake-build-debug\untitled.exe
i
St16initializer_listIiE

Process finished with exit code 0

建议更新conf.py文件

在Sphinx v2.0.0上make会报如下问题:

Running Sphinx v2.0.0
loading translations [en_US]... not available for built-in messages

Extension error:
Could not import extension sphinx.ext.pngmath (exception: No module named 'sphinx.ext.pngmath')

屏蔽conf.py文件的15行

extensions = ['sphinx.ext.pngmath']

可以解决以上问题.所以建议更新下最新的conf.py文件

“filler characters”的翻译

对于filler characters,是英文拼错,还是中文就是这个意思,或者中文翻译不对?

原文中是:Use quotes rather than filler characters where possible.

译文中是:尽可能使用引用,而不是过滤字符串。

变成正式的独立项目吧!

刚提交的某 pull request 被 merged 后,发现我的 contributions graph 居然没计入这些 commits! Commit was made in a fork 提到:

  • To detach the fork and turn it into a standalone repository on GitHub, contact GitHub support.

所以我现在去联系 GitHub support 了,摇身一变成正式的独立项目吧!

Any updates of this project?

This long time before this repo was updated. Is there any problem of translating? Or is this project no longer needed because others may have create a better one?

Please let me know the latest news of this project. Thank you.

C++有两个8.8

8.8. 标点, 拼写和语法
8.8. TODO 注释

前一个应该是8.7

C++ Guide Style・开坑

本来想对官方提交 pull request 的,但误操作成在 fork 项目里的 pull request 了。

我全更新好会再正式推送 pull request 过来。

以免撞坑,特此公告!

编译不通过

在编译的时候碰到的问题是
exception: No module named 'sphinx.ext.pngmath'

Fix typo in README.rst

Fix typo in README.rst

File: README.rst
Line: 36
Original: 另外, 招募自愿者翻译 ...
Fixed: 另外, 招募愿者翻译 ...

emacs配置文件

我想下载格式里面提供的那个emacs配置文件,可是当打开链接的时候为什么提示找不到网页。。。。

不要使用std::forward?

图片

这是个明显的错误吧,forward这么好的东西为什么不要用?

原文说的是:
Support 'perfect forwarding' in generic code.
You may use forwarding references in conjunction with std::forward, to support perfect forwarding.

还有人维护吗?

最近Google C++英文版风格指南更新了很多内容,包括作用域和类。其中关于接口那一部分的内容不见了,不知道是不是被删除了,现在英文版对“接口”没有明确的命名(Interface)和规范等要求,不知道是否需要更新,可以的话我想提交PR

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.