高效编程之充分运用软件: VS C++ 查找与替换

高效编程之充分运用软件: VS C++ 查找与替换

前言:本人是个小菜鸡,计算机专业大一学生,由于没什么基础,一切得一点点学起,可能对于某些大神,看了这篇文章可能会想:切,这都不知道。但我想,总有人会不知道。就让我记录吧,也许有人会有需要呢?另外有大佬有更好解决问题的方法也欢迎指教。

问题来源

最近在学c++的类,学校的OJ练习是创建各种类实现各种功能。

要求创建的类们挺有趣,比如:

有兴趣的同学可以做一做,我在文末附上了题目的主函数和输出。

Goat and Wolf

再如:
Cat类

可是,一题一题做下来有个问题,一旦做完一题要做下一个题时会有新的类,有新的类名,在一个个把定义时的类名,构造函数的类名,析构函数的类名改了两三次后,我觉得这样实在是太愚蠢了,就探寻有没有什么好的解决方法。

于是,我想到了学Word的时候有查找和替换,可以一下子把所有的A都改成B,vs c++作为一个类文本编辑器,没准也会有,没错,就是它!然后果然也在vs c++里找到了查找和替换。生活总是这么机缘巧合,所以有时要学会联想与类比,我认为对于自己的理解能力是有用的。

解决方法

可以在编辑里找到查找和替换,也可以快捷键ctrl + H快速开启,接下来在第一行输入自己想查找的对象,在第二行输入替换的内容。如下所示。

查找与替换

接下来按Enter或者Alt+A就可以进行替换了,如果需要全部替换,可以直接Alt+R,不过全部替换时要保证要替换后不会影响到其他代码的内容。

比如,如果我们把以上代码中的变量w替换掉时,如果全部替换的话,那么凡是w都会被替换,这时如果主函数中有一个while循环语句就会造成麻烦,所以要小心。要跳过某一个内容的替换可以按F3查找下一个,回去可以按Shift + F3

当然,最直接的解决方法是起一个完整表示变量含义的名字,在此是我偷懒了,用w代替weight

思考

进而言之,回到最初,如果起一个简单的类名,并在整个练习中从头用到尾,把主函数稍微改一下不就没那么麻烦了吗?

确实,如果在8个练习中只用一个类名确实可以省不少麻烦,但是有些事情没有对与不对,只有好与不好,这么做可以,但是不好。这样会帮助我们养成偷懒的坏习惯,平时不写注释就算了,取变量名还这么随便,别说别人看不懂你的代码,就算是自己过阵子回来看自己写的代码也不知道是什么东西。

老师常说,代码是写给人看的,你的代码人看不懂,又有什么价值呢?现在刷题能过就行,但以后出去工作很多都是团队工作,听说不写注释的程序员是会被唾沫淹死的。一个好的变量名、函数名、类名也就相当于注释了,好的习惯要从 一年级 大一养起。(我们c++老师总是很宽容地说我们是一年级,很多东西可以慢慢理解)

最后,如果取变量名有点头疼,换而言之是词汇量不过硬,这里有一个网站可供你查询:CODELF

如果我的记录对你有些许帮助,点个赞让我知道吧!🙂

附题 有关知识:对象指针
题1
//把代码补充完整,以实现要求的输出。
//主函数如下:

int main()
{
 Goat *g1 = new Goat("Pretty Goat", 47);
 Goat *g2 = new Goat("Warm Goat", 60);
 Wolf *w1 = new Wolf("Wilie", 50);
 print(g1);
 print(g2);
 print(w1);
 g2->sleep();
 w1->eat(g1);
 print(g2);
 print(w1);
 return 0;
}

//输出

Pretty Goat is a goat that weights 47 kg.
Warm Goat is a goat that weights 60 kg.
Wilie is a wolf that weights 50 kg.
Warm Goat has a good sleep, increasing 2 kg.
Wilie eats Pretty Goat, increasing 47 kg.
Warm Goat is a goat that weights 62 kg.
Wilie is a wolf that weights 97 kg.
题2
//Tom猫和Garfield猫打起来了。
//把代码补充完整,以实现要求的输出。
//主函数如下:

int main()
{
 Cat c1("Tom", 100, 10), c2("Garfield", 50, 20);
 while (c1.isAlive() && c2.isAlive())
 {
  c1.showIntro();
  c2.showIntro();
  cout << "**********" << endl;
  c1.attack(c2);
  if (!c2.isAlive())
   break;
  c2.attack(c1);
  cout << "----------" << endl;
 }
 return 0;
}

//输出

tip:注意最后一行输出的实现

Tom HP: 100 ATTACK: 10
Garfield HP: 50 ATTACK: 20
**********
Tom attacks Garfield. Garfield receives 10 damage.
Garfield attacks Tom. Tom receives 20 damage.
----------
Tom HP: 80 ATTACK: 10
Garfield HP: 40 ATTACK: 20
**********
Tom attacks Garfield. Garfield receives 10 damage.
Garfield attacks Tom. Tom receives 20 damage.
----------
Tom HP: 60 ATTACK: 10
Garfield HP: 30 ATTACK: 20
**********
Tom attacks Garfield. Garfield receives 10 damage.
Garfield attacks Tom. Tom receives 20 damage.
----------
Tom HP: 40 ATTACK: 10
Garfield HP: 20 ATTACK: 20
**********
Tom attacks Garfield. Garfield receives 10 damage.
Garfield attacks Tom. Tom receives 20 damage.
----------
Tom HP: 20 ATTACK: 10
Garfield HP: 10 ATTACK: 20
**********
Tom attacks Garfield. Garfield receives 10 damage.
Garfield is destroyed.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值