编程的有效方法--用枚举表示选项及状态

1、好处

  在商城项目的开发中,用户购买完成之后,我们常常根据所买商品的类型push到相应的控制器中,而商品类型有很多种,如果使用判断语句,代码就显得臃肿或难以理解,此时,我们就可以使用枚举来表示商品类型,再用switch语句执行相应的操作,这样,代码就简洁很多,更加利于我们的开发;

  再者,在多选项卡中,用枚举来表示所选项,也更有利于我们的开发;

2、声明

typedef NS_ENUM(NSInteger, OrderType){
    OrderTypeLift = 0,
    OrderTypeGift = 1 << 0,      //左移
    OrderTypeBusi = 1 << 1,
    OrderTypeSafeCity = 1 << 2,
};

3、在状态中的使用

  根据所选择商品的类型执- (void)chooseGiftWithOrderType:(OrderType)type {

switch (type) {
        case OrderTypeBusi:
        {
            [self confirmBusi];
        }
            break;
        case OrderTypeLift:
        {
            [self confirmLift];
        }
            break;
        case OrderTypeGift:
        {
            [self confirmGift];
        }
            break;
        case OrderTypeSafeCity:
        {
            [self confirmCity];
        }
            break;
    }
}

4、多选操作

// WKWebView中监听加载进度的新值和旧值
[_wk addObserver:self
          forKeyPath:@"estimatedProgress"
             options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
             context:nil];

5、注意点

  1>应该用枚举来表示状态机的状态、传递给方法的选项以及状态码等值,给这些值起个易懂的名字。

  2>如果把传递给某个方法的选项表示为枚举类型,而多个选项又可同时使用,那么就将各选项值定义为2的幂,以便通过按位或操作将其组合起来。

  3>在处理枚举类型的switch语句中不要实现default分支。这样的话,加入新枚举之后,编译器就会提示开发者:switch语句并未处理所有枚举。

时间: 2024-10-08 22:24:08

编程的有效方法--用枚举表示选项及状态的相关文章

在WPF中使用变通方法实现枚举类型的XAML绑定

问题缘起 WPF的分层结构为编程带来了极大便利,XAML绑定是其最主要的特征.在使用绑定的过程中,大家都普遍的发现枚举成员的绑定是个问题.一般来说,枚举绑定多出现于与ComboBox配合的情况,此时我们希望实现的目标有: 建立选择项与ItemsSource的对应关系: 自动获取用于ItemsSource的枚举源: 自定义下拉框中显示的内容. 对于目标1,考虑最简单的模式,即枚举的定义采用从0开始的连续整数,可以使用IValueConverter接口来实现从枚举到整型的双向转换,以使得枚举成员绑定

跟着百度学PHP[4]OOP面对对象编程-6-构造方法(__construct)和构析方法(__destruct)

函数就是成员方法(方法有三:构造方法.成员方法.析构方法) 下面是两种方法. 构造方法和构析方法 00x1 构造方法 构造方法会在创建对象之后自动调用.其名称为__construct <?php class Student{ var $name; var $age; var $sex; function __construct(){ //可以从输出中看得出来,我们并没有输出这个方法,但是他自动输出了.这个就是构造方法的作用,会自动的被调用! echo "520PHP<br />

AOP基础知识及AOP切面编程之注释方法、xml配置方法

<span style="font-family: 微软雅黑; font-size: 10.5pt; letter-spacing: 0pt; ">AOP概念</span> Aspect(切面):它跟类相似,只是两者的关注点不一样,类是对物体特征的抽象,而切面是对横切性关注点的抽象 joinpoint(连接点):所谓连接点就是被拦截到的点,在spring中,这些点是方法,因为spring只支持方法类型的连接点,实际上joinpoint还可以是field或类构造器

跟着百度学PHP[4]OOP面对对象编程-15-魔术方法__call方法

在程序开发中,如果在使用对象调用对象内部方法时候,调用的这个方法不存在那么程序就会出错,然后程序退出不能继续执行.那么可不可以在程序调用对象内部 不存在的方法时,提示我们调用的方法及使用的参数不存在,但程序还可以继续执行,这个时候我们就要使用在调用不存在的方法时自动调用的方 法“__call()”.  THE END 跟着百度学PHP[4]OOP面对对象编程-15-魔术方法__call方法

编程题-翻棋游戏-枚举

题目 约翰知道,那些高智力又快乐的奶牛产奶量特别高.所以他做了一个翻瓦片的益智游戏来娱乐奶牛.在一个M×N(1≤M,N≤15)的骨架上,每一个格子里都有一个可以翻转的瓦片.瓦片的一面是黑色的,而另一面是白色的.对一个瓦片进行翻转,可以使黑变白,也可以使白变黑.然而,奶牛们的蹄子是如此的巨大而且笨拙,所以她们翻转一个瓦片的时候,与之有公共边的相邻瓦片也都被翻转了.那么,这些奶牛们最少需要多少次翻转,使所有的瓦片都变成白面向上呢?如杲可以做到,输出字典序最小的结果(将结果当成字符串处理).如果不能做

枚举 用类的方法模拟枚举

package cn.itcast.day1; public class Weekday0 { private Weekday0(){} public static final Weekday0 SUN = new Weekday0(); public static final Weekday0 MON = new Weekday0(); public static final Weekday0 TUS = new Weekday0(); public static final Weekday0

javaScript DOM编程常用的方法与属性

DOM是Document Object Model文档对象模型的缩写.根据W3C DOM规范,DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的标准组件. Node接口的特性和方法 特性/方法 类型/放回类型 说明 nodeName String 节点的名字:根据节点的类型而定义 nodeValue String 节点的值:根据节点的类型而定义 nodeType Number 节点的类型常量值之一 ownerDocument Document 指向这个节点所属的文档 first

crm2013javascript编程新增的方法

//*****************弹出一个对话框 //message: 消息 //onCloseCallback: 关闭时候执行的事件 Xrm.Utility.alertDialog(message, onCloseCallback) //*****************弹出一个确认对话框 //message: 消息 //yesCloseCallback: 点击yes按钮时候执行的事件 //noCloseCallback: 点击no按钮时候执行的事件 Xrm.Utility.confirm

PHP提高编程效率的方法,你知道多少呢?

PHP语言是最WEB的计算机语言,而且也是应用最广泛的语言,那么PHP对编程的影响有多大呢?下面可以去了解一下. 用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种 可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号).1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍.2.$row[’id’] 的速度是