程序员写代码也存在本手、妙手、俗手

2022年的高考已经结束,准大一的学子们今天起你们不用去深究何是“本手”何是“俗手”,放松起来去疯狂地玩吧! 但是从程序猿写代码的角度来分析我认为程序猿写代码也有本手、俗手之分。

代码格式规范,代码质量中规中矩,bug较少,可以实现需求的代码就似本手;逻辑混乱,bug满屏,虽然能够运行,但是可能是靠着bug跑了起来,代码随时有跑飞的嫌疑,这即是俗手;而代码高手写的叫一个灵动飘逸,就似围棋高手在手谈中“妙手”不断、精妙绝伦也。我承认,我也是一个游离于本手和俗手之间的programmer,虽有时也想神来一手,但奈何level too low,但追求妙手”的勇气和努力不曾减少
本手是不偏不倚,符合棋理的一招棋。它既不过分,也不保守,处于攻防的平衡位置,不一定是最优解,但是正解。无论是作为一名职场人或是一名大学生亦或是一名研究生,都应该做到本手为首,做好当下的自己的本职工作,完美的完成每一次自己导师留给自己的课设足以。生活中处处能下出“本手”,其实并不简单。
妙手,是可遇不可求的,有时被称为神之一手。妙手是灵感的迸发,充满创意和才华。在下棋中,妙手需要经验的积累,对形势的判断要相当敏锐,要具备非凡的洞察力。在生活中妙手要时刻严格要求自己,完美的完成每一件事,可是大多数情况都会不如人意。
俗手就是我们大多数人的一种情况。作为棋手“其实他也不想下俗手啊,但奈何水平有限,”,所以,我们只有不断学习进步,只有我们的水平上来,才能少下出俗手。
在实际开发中我们总是会遇到各种各样的问题,比如下面几种:
功能先上了再说

功能先上了再说

这像不像你调试代码的样子

在这里插入图片描述

这是不是你写完代码的现状

在这里插入图片描述

下面我来用几个例子来说明一下

在程序中,如果我们要实现键盘不断输入数字,while()语句不断执行的功能,我们可以采用这样的结构`

#include <stdio.h>
int main()
{
	int num=0;
	printf("please input data:");
	scanf("%d",&num);
	while(num>=0)
	{
		scanf("%d",&num);
		printf("%d",num);
		printf("please continue input data:"):
	}
}
//程序键盘不断输入数字,终端不断打印数据,那么出口条件是什么呢?当用户输入负数时,因为不满足num>0这个条件,程序就会退出循环。

其实我们可以用scanf()函数的返回值来完成while循环里面的条件判断。

#include <stdio.h>
int main()
{
	int num=0;
	printf("please input data:");
	while(scanf("%d",&num)==1)
	{
		printf("%d",num);
		printf("please continue input data:"):
	}
}
//利用scanf函数的返回值巧妙的将scanf字符输入和条件判断用一条语句来实现,类似的我们还可以使用ctype.h头文件中的isdigit()函数来对输入的数字进行判断。

同样如果程序要实现统计一段英文中单词的数量,文章的字符数,行数。我们可以这样来实现

/*采用从最后一个空格来判断是不是单词的方法 缺点是停止符如果在下一行的开头会多统计一行*/
#include <stdio.h>
#include <stdbool.h>

int wordsnum;
int rownum;
int charnum;
char ch,temp;
bool space=false;

int main()
{
	printf("请输入一段英文,用|符号结束\n");
	do
	{
		ch=getchar();
		charnum++;
		if(ch=='\n')
			rownum++;
		if((ch==' ' || ch=='\n' || ch=='|') && space==1){
			space=false;
			wordsnum++;
		}
		if(ch!=' ' && ch!='\n')
			space=true;
	}while(ch!='|');
	printf("\n|------------------------|\n");
	printf("\tcharnum is %d\n",--charnum);
	printf("|------------------------|\n");
	printf("\trownum is %d\n",++rownum);
	printf("|------------------------|\n");
	printf("\twordsnum is %d",wordsnum);
	printf("|------------------------|\n");
	return 0;
}

改变一下思路其实我们可以这样去实现

//通过第一个字母去判断是不是一个单词,就完美的解决了上述的问题,而且代码逻辑更加的清楚,有条理。
#include <stdio.h>
#include <stdbool.h>
#include <ctype.h>
#define STOP '|'

int main()
{
	char c;
	char prev;
	int n_char=0;
	int n_words;
	int n_line;
	int P_line;
	bool inword=false;
	printf("请输入:\n");
	prev='\n';
	while((c=getchar())!=STOP)
	{
		n_char++;
		if(c=='\n')
		n_line++;
		if(!isspace(c) && !inword)
		{
			inword=true;
			n_words++;
		}
		if(isspace(c) && inword)
		inword=false;
		prev=c;
	} 
	if(prev!='\n')
	P_line=1;
	printf("n_char:%d n_line:%d n_words:%d P_line:%d",n_char,n_line,n_words,P_line);
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值