C for ios --- 标识符与注释

来源:互联网 发布:辛巴软件 编辑:程序博客网 时间:2024/06/15 18:28

什么是标示符

  • 日常生活中得标识符

    • (img)
    • 乔布斯/乔丹/陈冠希这些都是标识符
  • 标识符就是程序员自己在程序中起的一些名字。

    • 首先要明确的是,程序员自己起的名字,肯定是不能使用和关键字同名的名字。

2. 标识符的作用

  • 标识符,从字面上理解就是用来标识某些东西的符号,标识的目的就是为了将这些东西区分开来

  • 其实标识符的作用就跟人类的名字差不多,为了区分每个人,就在每个人出生的时候起了个名字

  • C语言是由函数构成的,一个C程序中可能会有多个函数,为了区分这些函数,就给每一个函数都起了个名称。函数的名称就是标识符的一种。除了函数,以后还会学到“变量”这个概念,变量的名称也是标识符


3.标识符命名规则

  • 1.只能由26个英文字母的大小写、10个阿拉伯数字0\~9、下划线_组成
  • 2.严格区分大小写,比如test和Test是2个不同的标识符
  • 3.不能以数字开头
  • 4.不可以使用关键字作为标识符

4.练习

fromNo12 my_Boolean Obj2 lnj Mike2jack _test haha(da)tt jack_rose GUI

@: 2

标示符命名规范

本小节知识点:

  1. 【理解】标识符命名规范
  2. 【了解】标示符命名规范详述
  3. 【了解】其它标示符命名规范

1.标识符命名规范

  • 命名规范:
    • 起一个有意义名字,能够��高代码的可读性
    • 驼峰命名(除开第一个单词后面每个单词首字母大写)
    • (img)
    • (img)

2.标示符命名规范详述

  • 驼峰命名法(Camel-Case)是电脑程序编写时的一套命名规则(惯例):

    • 程序员们为了自己的代码能更容易的在同行之间交流,所以才取统一的可读性比较好的命名方式。

      • 例如:有些程序员喜欢全部小写,有些程序员喜欢用下划线,所以如果要写一个my name的变量,他们常用的写法会有myname、my_name、MyName或者myName。这样的命名规则不适合所有程序员阅读,而利用驼峰命名法来表示,可以增加程序可读性。
    • 驼峰命名法就是当变量名或函数名是由一个或多个单字连结在一起,而构成的唯一识别字时,第一个单字以小写字母开始,第二个单字的首字母大写;或每一个单字的首字母都采用 大写字母

      • 例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。
    • 驼峰命名法(Camel-Case)一词来自 Perl 语言中普遍使用的大小写混合格式,
      而 Larry Wall 等人所著的畅销书《Programming Perl》(O~'~Reilly 出版)的封面图片正 是一匹骆驼。 驼峰命名法的命名规则可视为一种惯例,并无绝对与强制,为的是增加识别和可读 性。

  • 不按照规范的后果

    • (img)

3.其它标识符命名规范

  • 命名应当直观且可以拼读,要望文知意,便于记忆和阅读。

    • 标识符最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂, 用词应当准确。
  • 命名的长度应当符合“min-length && max-information”原则。

    • C 是一种简洁的语言, 命名也应该是简洁的。例如变量名MaxVal 就比 MaxValueUntilOverflow 好用。标识符的长度一般不要过长,较长的单词可通过去掉“元音”形 成缩写。
    • 另外,英文词尽量不缩写,特别是非常用专业名词,如果有缩写,在同一系统中对同一单词必 须使用相同的表示法,并且注明其意思。
    • 大多数ANSI编译程序允许有至多31个有效字符。也就是说,只有变量名或函数名的前31个字符 的唯一性会被检查,其余的字符将被忽略掉。
    • 比如: PrintOutAllTheClientsMonthEndReports(); prt_rpts();
  • 当标识符由多个词组成时,建议采用“驼峰命名法”。

    • 比如:int CurrentVal;这样的名字看起来比较清晰,远比一长串字符好得多。
  • 尽量避免名字中出现数字编号,如Value1,Value2 等,除非逻辑上的确需要编号。

    • 比如驱动开发时为管脚命名,非编号名字反而不好。 初学者总是喜欢用带编号的变量名或函数名,这样子看上去很简单方便,但其实是一颗颗定时炸 弹。这个习惯初学者一定要改过来。
  • 对在多个文件之间共同使用的全局变量或函数要加范围限定符

    • (建议使用模块名(缩写)作为范围限定符)。(GUI_ ,etc)标识符的命名规则
  • 标识符名分为两部分:规范标识符前缀(后缀) + 含义标识。

    • 非全局变量可以不用使用范围限定符前缀。

@: 3

注释基本概念

本小节知识点:

  1. 【掌握】什么是注释
  2. 【了解】为什么要使用注释?
  3. 【了解】应用注释的目的和应用场景
  4. 【理解】注释的特点

1.什么是注释

  • 注释是在所有计算机语言中都非常重要的一个概念,从字面上看,就是注解、解释的意思

  • 注释可以用来解释某一段程序或者某一行代码是什么意思,方便程序员之间的交流。假如我写完一行代码后,加上相应的注释,那么别人看到这个注释就知道我的这行代码是做什么用的

  • 注释可以是任何文字,也就是说可以写中文
  • 在开发工具中注释一般是绿色

江哥提示:
” >+ 初学者编写程序可以养成习惯:先写注释再写代码。
” >+ 将自己的思想通过注释先整理出来,在用代码去体现。
” >+ 因为代码仅仅是思想的一种体现形式而已。


2.为什么要使用注释?

  • 新浪微博表情键盘”其中一个”文件代码
~~ typedef enum{~~     HMToolBarBtnTypeNear = 100,~~     HMToolBarBtnTypeNormal,~~     HMToolBarBtnTypeEmoji,~~     HMToolBarBtnTypeLXH~~ }HMToolBarBtnType;~~ ~~ @interface HMEmoticonsController ()<UICollectionViewDataSource, UICollectionViewDelegate>~~ @property (weak, nonatomic) IBOutlet UICollectionViewFlowLayout *layout;~~ @property (weak, nonatomic) IBOutlet UICollectionView *emoticonView;~~ - (IBAction)emoticonToolbarClick:(UIBarButtonItem *)sender;~~ @end~~ ~~ @implementation HMEmoticonsController~~ ~~ - (void)viewDidLoad {~~     [super viewDidLoad];~~     NSUInteger col = 7;~~     NSUInteger row = 3;~~     NSUInteger margin = 10;~~     CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;~~     CGFloat emoticonWidth = (screenWidth - (col + 1) * margin) / col;~~     CGFloat emoticonHeight = emoticonWidth;~~     self.layout.itemSize = CGSizeMake(emoticonWidth, emoticonHeight);~~     self.layout.minimumInteritemSpacing = margin;~~     self.layout.minimumLineSpacing = margin;~~     self.layout.sectionInset = UIEdgeInsetsMake(margin, margin, margin, margin);~~     self.layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;~~     self.emoticonView.pagingEnabled = YES;~~ }~~ - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView~~ {~~     return [HMEmoticonsManager shareManager].emotionSections.count;~~ }~~ ~~ - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section~~ {~~     HMEmoticonSection *categoryScetion = [HMEmoticonsManager shareManager].emotionSections[section];~~     return categoryScetion.emoticons.count;~~ }~~ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath~~ {~~     HMEmoticonCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:[HMEmoticonCell identifier] forIndexPath:indexPath];~~      HMEmoticonSection *categoryScetion = [HMEmoticonsManager shareManager].emotionSections[indexPath.section];~~     HMEmoticon *emoticon = categoryScetion.emoticons[indexPath.item];~~     cell.emoticon = emoticon;~~     return cell;~~ }~~ ~~ #pragma mark - UICollectionViewDelegate~~ - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath~~ {~~     HMEmoticonSection *categoryScetion = [HMEmoticonsManager shareManager].emotionSections[indexPath.section];~~     HMEmoticon *emoticon = categoryScetion.emoticons[indexPath.item];~~     HMEmoticonSection *nearSection = [HMEmoticonsManager shareManager].emotionSections[0];~~     BOOL contain = NO;~~     for (HMEmoticon *oldEmoticon in nearSection.emoticons) {~~         if ([oldEmoticon.chs isEqualToString:emoticon.chs] ||~~             [oldEmoticon.emoji isEqualToString:emoticon.emoji]) {~~             contain = YES;~~             break;~~         }~~     }~~     if (!contain) {~~         [nearSection.emoticons removeObjectAtIndex:nearSection.emoticons.count - 2];~~         [nearSection.emoticons insertObject:emoticon atIndex:0];~~         [self.emoticonView reloadData];~~     }~~     if ([self.delegate respondsToSelector:@selector(emoticonsController:emoticon:)]) {~~         [self.delegate emoticonsController:self emoticon:emoticon];~~     }~~ }~~ ~~ - (IBAction)emoticonToolbarClick:(UIBarButtonItem *)sender~~ {~~     NSUInteger count = 0;~~     // Emoji = 2~~     for (int i = 0; i < sender.tag; i++) { // 0 1~~         NSNumber *currentSectionCount = [HMEmoticonsManager shareManager].categroySections[i];~~         count += currentSectionCount.intValue; // 7~~     }~~     CGRect rect = self.emoticonView.frame;~~     rect.origin.x = count * rect.size.width;~~     [self.emoticonView scrollRectToVisible:rect animated:YES];~~ }~~ 
  • 阅读性差

3.应用注释的目的和应用场景

  • 常见用法一(解释代码):
~~ - (UIBarButtonItem *)initWithNorImage:(NSString *)norimage higImage:(NSString *)higImage title:(NSString *)title target:(id)target action:(SEL)action~~ {~~     // 1.创建一个按钮~~     UIButton *btn = [[UIButton alloc] init];~~     // 2.设置按钮的默认图片和高亮图片~~     if (norimage != nil &&~~         ![norimage isEqualToString:@""]) {~~         // 图片不为空~~         [btn setImage:[UIImage imageNamed:norimage] forState:UIControlStateNormal];~~     }~~     if (higImage != nil &&~~         ![higImage isEqualToString:@""]) {~~         // 图片不为空~~         [btn setImage:[UIImage imageNamed:higImage] forState:UIControlStateHighlighted];~~     }~~     // 设置标题~~     [btn setTitle:title forState:UIControlStateNormal];~~ ~~     // 3.监听按钮的点击事件~~     [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];~~     // 4.设置按钮的frame~~     // 可以调用控件的sizeToFit方法来自动调整控件的大小~~     [btn sizeToFit];~~ ~~     // 5.根据按钮创建BarButtonItem~~     return [[UIBarButtonItem alloc] initWithCustomView:btn];~~ }
  • 常见用法二(做函数说明):
~~ /**~~  *  创建item~~  *~~  *  @param norimage 默认状态的图片~~  *  @param higImage 高亮状态的图片~~  *  @param title    标题~~  *~~  *  @return 创建好的item~~  */~~ - (UIBarButtonItem *)initWithNorImage:(NSString *)norimage higImage:(NSString *)higImage title:(NSString *)title target:(id)target action:(SEL)action~~ {~~     // 1.创建一个按钮~~     UIButton *btn = [[UIButton alloc] init];~~     // 2.设置按钮的默认图片和高亮图片~~     if (norimage != nil &&~~         ![norimage isEqualToString:@""]) {~~         // 图片不为空~~         [btn setImage:[UIImage imageNamed:norimage] forState:UIControlStateNormal];~~     }~~     if (higImage != nil &&~~         ![higImage isEqualToString:@""]) {~~         // 图片不为空~~         [btn setImage:[UIImage imageNamed:higImage] forState:UIControlStateHighlighted];~~     }~~     // 设置标题~~     [btn setTitle:title forState:UIControlStateNormal];~~ ~~     // 3.监听按钮的点击事件~~     [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];~~     // 4.设置按钮的frame~~     // 可以调用控件的sizeToFit方法来自动调整控件的大小~~     [btn sizeToFit];~~ ~~     // 5.根据按钮创建BarButtonItem~~     return [[UIBarButtonItem alloc] initWithCustomView:btn];~~ }

4.注释的特点

  • 注释是写给人看的,不是给计算机看的。计算机怎么可能看得我们写的中文。因此当编译程序的时候,并不会将注释编译到.o目标文件中
  • 从.o文件的大小可以间接看出注释后的代码并没有被编译
  • 检查代码的作用
  • 排除错误
0 0
原创粉丝点击