自从面向对象开始,我们就学习抽象,继承,多态。等等。每一个都与封装 有着密不可分的关联。
那么在细节处如何做到封装,今天举几个小例说明。
if-else的语句我们经常写。有时候很多地方都需要重复的去写。例如。
<span style="font-family:KaiTi_GB2312;font-size:18px;"> if (flag) voice.Pause(); else voice.Resume(); </span>
别看简单。就是这举手投足间的细节才能看出编程的基本功如何。
对于这种经常会用的逻辑判断,如果你还不去封装, 一定会被有经验的人笑话的。
<span style="font-family:KaiTi_GB2312;font-size:18px;"> public static void ChenagedIsPauseFlag(bool flag) { if (flag) voice.Pause(); else voice.Resume(); } </span>
同样的例子再看 一个。
<span style="font-family:KaiTi_GB2312;font-size:18px;"> if (!isStopSpeek) { spVoice.Rate = 0; spVoice.Speak(Text, Flags); } else { spVoice.Pause(); } </span>
封装成一个方法为
<span style="font-family:KaiTi_GB2312;font-size:18px;"> static void Speak(string Text, SpeechVoiceSpeakFlags Flags) { if (!isStopSpeek) { spVoice.Rate = 0; spVoice.Speak(Text, Flags); } else { spVoice.Pause(); } } </span>
除了这样的封装。接下来大家再看这样一组代码。
<span style="font-family:KaiTi_GB2312;font-size:18px;"> nowAlarmLv = 五; VoiceSpeek(alarm5Lvs.Keys.ToList());//解除语音播报时的报警等级-2015-8-6 nowAlarmLv = 四; VoiceSpeek(alarm4Lvs.Keys.ToList()); nowAlarmLv = 三; VoiceSpeek(alarm3Lvs.Keys.ToList()); nowAlarmLv = 二; VoiceSpeek(alarm2Lvs.Keys.ToList()); nowAlarmLv = 一; VoiceSpeek(alarm1Lvs.Keys.ToList());</span>
这样写丝毫没有问题,但是例子中的“一二三四五”还是字段的,并且不便于管理,出错率极高。极不容易维护。现在的代码 中像这些字段是最好 不要出现的。
那么我们需要找一个类,将其封装起来。枚举自然成了首选。
<span style="font-family:KaiTi_GB2312;font-size:18px;"> /// <summary> /// TTS等级枚举 /// </summary> public enum AlarmLevel { 一 = 1, 二 = 2, 三 = 3, 四 = 4, 五 = 5,//解除时的语音播报等级 为最高 Normal = 0 }</span>
这样的好处多多,安全多多了。一些编程上的小技巧学习心得就是慢慢积累的工作经历,不要止步于自己手头的 一点工作。会看到一个更广阔的天空。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-02 22:50:35