编程小技巧之封装

自从面向对象开始,我们就学习抽象,继承,多态。等等。每一个都与封装 有着密不可分的关联。

那么在细节处如何做到封装,今天举几个小例说明。

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

编程小技巧之封装的相关文章

hadoop编程小技巧(4)---全局key排序类TotalOrderPartitioner

Hadoop代码测试版本:Hadoop2.4 原理:在进行MR程序之前对输入数据进行随机提取样本,把样本排序,然后在MR的中间过程Partition的时候使用这个样本排序的值进行分组数据,这样就可以达到全局排序的目的了. 难点:如果使用Hadoop提供的方法来实现全局排序,那么要求Mapper的输入.输出的key不变才可以,因为在源码InputSampler中提供的随机抽取的数据是输入数据最原始的key,如下代码(line:225): for (int i = 0; i < splitsToSa

积累的VC编程小技巧之对话框

1.用鼠标移动基于对话框的无标题栏程序的简单方法 void CVCTestDlg::OnLButtonDown(UINT nFlags, CPoint point) {    //一句话解决问题     SendMessage(WM_SYSCOMMAND,0xF012,0);    CDialog::OnLButtonDown(nFlags, point);} 2.对话框消息映射 有对话框A,B从A中发消息给B然后B处理.准备工作,先定义消息,如下#define WM_B_NOTIFY WM_U

积累的VC编程小技巧之工具提示

1.用鼠标移动基于对话框的无标题栏程序的简单方法 void CVCTestDlg::OnLButtonDown(UINT nFlags, CPoint point) {    //一句话解决问题     SendMessage(WM_SYSCOMMAND,0xF012,0);    CDialog::OnLButtonDown(nFlags, point);} 2.对话框消息映射 有对话框A,B从A中发消息给B然后B处理.准备工作,先定义消息,如下#define WM_B_NOTIFY WM_U

积累的VC编程小技巧之树操作

1.如何在TreeList中加图标? [问题提出]  请问treeview控件和treectrl控件的用法有何不同呢?向如何imagelist控件中加图象呀?  [解决方法]  1)    HICON hicon[8];    m_imageList.Create(16,16,0,8,8);    hicon[0]=AfxGetApp()->LoadIcon(IDI_ICON0);    hicon[1]=AfxGetApp()->LoadIcon(IDI_ICON1);    hicon[2

积累的VC编程小技巧之图标、光标及位图

1.图标透明 (1).Windows中的图标其实是有两个图像组成的,其中一个用于与它要显示的位置的图像做"AND"操作,另一个作"XOR"操作. 透明:用"白色"AND,用"黑色"XOR反色:用"白色"AND,用"白色"XOR正常色:用"黑色"AND,用正常颜色XOR.(2). WIN9X中好像是对像素的操作实现透明的WIN2K中就有API直接实现透明了!WIN2K中

积累的VC编程小技巧之框架窗口及其他

1.修改主窗口风格 AppWizard生成的应用程序框架的主窗口具有缺省的窗口风格,比如在窗口标题条中自动添加文档名.窗口是叠加型的.可改变窗口大小等.要修改窗口的缺省风格,需要重载CWnd::PreCreateWindow(CREATESTRUCT& cs)函数,并在其中修改CREATESTRUCT型参数cs.CWnd::PreCreateWindow 函数先于窗口创建函数执行.如果该函数被重载,则窗口创建函数将使用CWnd::PreCreateWindow 函数返回的CREATESTRUCT

积累的VC编程小技巧之文件操作

1.删除文件夹 // 删除文件夹及其所有内容void CBaseDoc::RemoveFolder(const CString &strPathName){    CString path = strPathName;    if (path.Right(1) != _T("\\"))        path += _T("\\");    path += _T("*.*");    CFileFind ff;    BOOL res =

积累的VC编程小技巧之组合框

1.如何正确的得到ComBox的指针 CComboBox *mComb = (CComboBox*)GetDlgItem(IDC_DuanCB); CComboBox *mComb = (CComboBox*)::GetDlgItem(m_hWnd,IDC_DuanCB); 2.CComboBox控件详解 CComboBox控件又称作组合框控件,其有三种形态可供选择,1.简单组合框(Simple)2.下拉组合框(Drop-down)3.下拉列表式组合框(Drop-down list). CCom

积累的VC编程小技巧之列表框

1.列表框中标题栏(Column)的添加 创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report.Align项里选择Top.Sort项里选择None. 然后在该List所在对话框的类(头文件)里创建ClistCtrl的一个对象m_list然后在.cpp文件的OnInitDialog()之类的函数里实现如下代码: CString strname[3]; strname[0]="Screen Name"; strname[1]=&