首页 > 其他分享 >较为舒适的码风速成指北

较为舒适的码风速成指北

时间:2023-10-10 17:22:23浏览次数:25  
标签:缩进 int 代码 码风 注释 成指北 舒适 风速 ......

观前提示:本文主要基于C++来展开,C用户请自动无视文章中出现的包括但不限于万能头、命名空间和STL等的特性。

前言

作为一个已经AFO多年的OIer,而如今进入了幻想乡的freshman,对于程设这玩意多少是有点前辈的姿态的。虽然我知道这样不好,但是爽啊

因此在看见某些编程小白的无知错误时,总免不了有些手痒痒,想当教师爷,于是就有了这篇对码风指手画脚的文章。

首先来到的是宇宙安全声明:本篇文章内所阐述的码风观点仅代表我个人,如有不同意见,那就是您对;同时我可能也会引用其他巨佬的代码,还请包容。

就酱(´・_・`)

什么是码风

伟大的哲学家子漫酱曾经说过:

一份赏心悦目的代码是工作效率的保证。

所谓码风,就是代码风格,直观上的表现就是代码看着舒不舒服。

每个人都会有自己独特的码风,这包括变量、函数的命名,有人喜欢用拼音,而有的人喜欢用英文,还有著名的驼峰命名法;还有括号打的位置,缩进的习惯乃至打空格的习惯,这些都是代码风格的一部分。

码风没有对错之分,但总的来说,让人看着舒服的代码总会有一些共性。

码风养成

关于括号

花括号

大抵有两种流派,一种是左花括号不换行

int main(){
  
  return 0;
}

另一种自然就是换行流派了

int main()
{
  
  return 0;
}

我个人觉得换过行会更加简洁,看着更有层次。但实际上好像是不换行的占多数来着。

其他括号没啥好说的,匹配上就行了。

关于空格

其实于我个人而言,我并不是很喜欢打空格。这主要是出于对MLE和TLE的恐惧,我觉得紧凑一点不是坏事。

例如这种:

for(int i=1;i<=n;++i)
{
	int k=a[i];
	if(k<=a[i-1]) ans++;
}

但在一些关键字处打上空格也有好处,据说是便于查错。鄙人未曾尝试过,所以不多做评价。

for (int i = 1;i <= n;i ++)
{
	int k = a [i];
	if (k <= a[i - 1]) ans ++;
}

关于缩进

理论上来说,如果你使用的代码编辑器(如Dev-C++、VSC等)不是太nt,一般缩进这块不太可能有什么大问题。

但还是可能会有这种代码飞到你面前

for(i=1;i<=100000;i++)
{if(i%2)
{
pi=pi+4.0/(2*i-1);}
if(……)
{
……
}
}
}

}

就…怎么说呢,看着非常难受。尽管在C/C++中缩进与否并不会影响代码运行(事实上有的语言是严格要求进行缩进的),但为了您和代码阅读者的寿命着想,还是尽可能正常缩进罢。

每对花括号内部的代码块都应要比上一层级的代码缩进一个,即一个Tab键。即使您的for/if后面的代码块仅有一行代码而无需使用花括号时,也请尽量将这行代码换行并缩进,这样便于认清代码的结构。

顺带一提,个人认为将原本有多个语句的for/if代码块使用逗号表达式来强制变为一行代码,以此来达到精简代码的目的是非常不明智的,这会严重牺牲代码的可读性。

关于函数及STL(C++)的使用

除了像dfs和递归等特殊场景下必须用到函数外,将代码中一些复用率高的代码打包成函数来调用,可以有效地提高可读性和查错、调试效率。

在大部分时候,自定义函数是能帮助到您解决很多实际性问题的。

一个大佬的主程序:

#include <bits/stdc++.h>
#define ......
......
using namespace std;
......
void imp(int k,int t)
{
  ......
}
void ......
......
int main()
{
	int n,m;
	ios::sync_with_stdio(false);
	cin>>n>>m;
	imp(n,m,1);
	cos(a[1],d[1][1]);
	dfs(n,1);
	outans(d[1][1]);
	return 0;
}

这个代码长约 200 行我就不放了

另一部分人的主程序:

#include <bits/stdc++.h>
using namespace std;
int main()
{
  ......
  return 0;
}

同样 150 多行的代码很明显就繁琐了。

至于STL,这是C++用户独享的moment,建议多记一些,这是非常有益身心的。

关于命名

包括两个部分,变量函数。但无论是变量还是函数,命名都有一个基本原则,那就是:尽可能地简单易懂

在一些小东西的代码中,经常会看见以下两种命名风格:

int a=114514,b=1919,c=810;
double d,e,f;
char g,h,i;

还有这种:

int zhengshu=2333;
double xiaoshu=0.233;
char zifu;

这两种在变量、函数较少时可能还会比较好辨认,但一旦数量上来了,就会显得十分混乱(又尤其是第二种)。

推荐以下几种命名方式:

  1. 直接使用对应单词(如果有且较短时)
  2. 也可以使用英文的缩写
  3. 多用善用下划线,例如my_name
  4. 还有经典的驼峰命名法:MyName

当然,当你变成老东西后,也可能会搞一些整活性质的命名。对此我只能说:**把你的注释写好! **

关于注释

我最讨厌10种人:

一种是写代码不写注释的人

另一种是让我写注释的人

——子漫酱

写注释真的很讨厌,但写注释也确实有助于增强代码的可读性,让人可以理解某段代码的用途,于人于己都很方便。

如果没有注释,你的函数、变量命名又很迷惑的话…

scanf(”%d“,&n);
for(int i=1;i<=n;i++)
{
	qaq(i);
	kkk();
}
orz();

这谁看的懂啊(╯‵□′)╯︵┻━┻

你可以像这样用注释来标明每个变量的用途

struct player {
    string name;
    int card[7], num[17], col[7], sum, niu, tieban, maxx, bomb, idd;
    long long score;
    /*
        card:记每个牌的点数
        num:记每种点数出现在的牌的数量
        col:记每张牌的花色 
        sum:记所有牌点数的和 
        niu:记牌的类型
            niu=0-10 无牛、牛一至九、牛牛 
        tieban:记录铁板的点数,如果没有铁板则记为0。 
        maxx:记录所有牌中最大的点数
        bomb:记录炸弹的点数,如果没有炸弹则记为0. 
    */
}a[100007];

也可以用注释给关键语句做上标注

for(int i=l;i<=1000;++i)
{
  int cnt=0,y[1000],sum=0;//cnt作为i的因子个数计数器
  //y[cnt]存储第cnt个因子
  for(int j=1;j<=i/2;++j)
    if(i%j==0)//判断是否为i的因子
      y[++cnt]=j,sum+=j;//存储并累加
}

除此之外,还可以以注释的形式在代码前备注文件名、时间、作者等信息,便于进行溯源

/*
File name:*.cpp
Author:***
Description:******
Generation time:yyyy-mm-dd
*/

顺带一提,代码(包括注释)中尽量避免出现中文,以防由于设备或编辑器而带来的文字编码差异让你的代码变成锟斤拷烫烫烫

一些小的注意事项和奇技淫巧

注意事项

标签:缩进,int,代码,码风,注释,成指北,舒适,风速,......
From: https://www.cnblogs.com/spectatorx/p/17753440.html

相关文章

  • 梵赛优视觉科技:建设舒适的浏览体验,设计可以做什么?
     在这内容为王的时代,海量的图文资讯信息充斥在我们的碎片化时间中,有驾作为百度生态体系内的汽车信息服务平台,内容建设尤为重要。那么设计有哪些手段为内容建设助力呢?接下来,我们依据阅读体验升级的设计经验,从目标拆解、痛点分析、设计打法等维度来分享设计思路。  设计目......
  • 医护上门系统—为老人和患者提供更舒适和现代化体验
    随着人们生活节奏的加快和社会老龄化现象的加剧,对于居家老人和患者的照料需求也日益增长。作为一家专注于为社区提供高质量护理服务的公司,我们自豪地介绍我们的全新上门护理系统,该系统正如其名,为您提供一系列便捷的功能、独特的特点和显著的优势。作为一项创新和前瞻性的服务,我们......
  • 风管风速计算规则
    总风量每小时的立方数除3600再除以风管的横截面积(平方米),所得的数就是风速(每秒米)100㎡/h除以3600除以250x320=80000毫米每方(0.08㎡)=0.347m/s......
  • MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度
    MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度关键词:用户舒适度综合能源PMV优化调度仿真平台:MATLAB+yalmip+cplex主要内容:代码主要做的是考虑用户舒适度的冷热电多能互补综合能源系统优化调度模型,在传统的冷热电联供型综合能源系统的基础上,进一步考虑了热惯......
  • 基于蒙特卡洛概率潮流计算 在IEEE33节点系统中,由于风光出力的不确定性,利用蒙特卡洛生
    基于蒙特卡洛概率潮流计算在IEEE33节点系统中,由于风光出力的不确定性,利用蒙特卡洛生成风速和光照强度得到出力,可得到每个节点的电压和支路功率变化,网损和光照强度。这段程序主要是进行电力系统潮流计算和蒙特卡洛仿真。下面我会对程序进行详细的分析和解释。原创文章,转载请说明......
  • MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度
    MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/662283130712.html关键词:用户舒适度综合能源PMV优化调度 仿真平台:MATLAB+yalmip+cplex主要内容:代码主要做的是考虑用户舒适度的冷热电多能互补综合能源系统......
  • 这8款实用软件,让你办公舒适度立刻提升数倍,高效完成工作
    一、PdfMergerPdfMerger是一款免费的PDF合并软件,可以将多个PDF文档合并为一个PDF文档。只需按照顺序选择要合并的文档,然后点击合并按钮,就能够按照顺序把多个PDF文档合并到一起。简洁的界面使使用该程序变得非常容易。对于经常需要合并PDF文档的小伙伴来说,这是一款非常实用的工具。......
  • 这8款实用软件,让你办公舒适度立刻提升数倍,高效完成工作
    一、PdfMerger PdfMerger是一款免费的PDF合并软件,可以将多个PDF文档合并为一个PDF文档。只需按照顺序选择要合并的文档,然后点击合并按钮,就能够按照顺序把多个PDF文档合并到一起。简洁的界面使使用该程序变得非常容易。对于经常需要合并PDF文档的小伙伴来说,这是一款非常实用的工......
  • 记录--极致舒适的Vue可编辑表格
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助使用ElementPlus的Table啥都好,就是没有可编辑表格!!!......
  • 众惠生活:让生活更加便利和舒适
    近年来,随着社会经济的不断发展,人们对于生活品质的要求也越来越高。为了满足大众的需求,众惠生活应运而生。众惠生活是一家致力于提供便利、舒适生活的企业,通过打造一个多元化的服务平台,为用户提供全方位的生活服务。众惠生活的服务范围非常广泛,包括外卖配送、家政服务、快递代收、洗......