什么是标示符

  • 日常生活中得标识符

    • (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文件的大小可以间接看出注释后的代码并没有被编译
  • 检查代码的作用
  • 排除错误

C for ios --- 标识符与注释相关推荐

  1. C语言关键字、标识符和注释

    一.关键字 C语言提供的有特殊含义的符号,共32个. 在Xcode中关键字全部高亮显示,关键字全部都为小写.如return.int等. 二.标识符 定义:标识符是程序员在程序中自定义的一些符号和名称. ...

  2. iOS_03_关键字、标识符、注释

    一.学习语法之前的提醒 1. C语言属于一门高级语言,其实,所有高级语言的基本语法组成部分都一样,只是表现形式不太一样. 2. 就好像亚洲人和非洲人,大家都有人类的结构:两只手.两只脚.一个头,只是他 ...

  3. C语言第三节关键字、标识符、注释

    学习语法之前的提醒 C语言属于一门高级语言,其实,所有高级语言的基本语法组成部分都是一样的,只是表现形式不太一样 就好像亚洲人和非洲人,大家都有人类的结构:2只 手.2只脚.1个头,只是他们外表不太一 ...

  4. Ada语言-标识符和注释

    标识符 1,ada标识符是不区分大小写的,如下所示它们指向的都是同一个标识符: 2, 全以字母开头,如下: 3,以字母或数字结尾,如下: 4,可以'包含'不连续的下划线,如下: 注释 注意:在Ada中 ...

  5. 【iOS工具】注释插件 VVDocumenter-Xcode 的安装使用及误点击“Skip Bundle”的解决办法!...

    一.前言 VVDocumenter-Xcode 注释插件是由 @onevcat 大神开发的一个Xcode注释插件,其作用是在Xcode中输入 "///" 后自动生成规范的文档注释, ...

  6. iOS:Tools:快速注释Doxygen

    Xcode5有个新特性就是自己定义的函数也会被检测集成到代码提示里面,也就是在Quick Help有提示.如 /*** @brief 设置id** @param id 要设置的id*/ +(void) ...

  7. iOS过滤json注释字段

    过滤并清除json中的注释字段 我们的后台习惯在接口文档的json示例中直接添加注释,有时候测试环境不满足条件无法测试某部分数据,使用接口文档中的json直接转换成模拟数据就相当方便,但是注释和一些不 ...

  8. 注释 标识符 关键字

    注释 标识符 关键字 注释 public class helloworld {public static void main(String[] args) {//输出一个hellowworldSyst ...

  9. 随笔分类 - 零基础学习iOS开发

    随笔分类 - 零基础学习iOS开发 不管你是否涉足过IT领域,只要你对iOS开发感兴趣,都可以阅读此专题. [零基础学习iOS开发][02-C语言]11-函数的声明和定义 摘要: 在上一讲中,简单介绍 ...

最新文章

  1. R语言聚类分析之层次聚类(hierarchical clustering)实战
  2. ubuntu 16.0.4 opencv 3.4.1 + opencv_contrib 3.4.1 cmake-gui 安装
  3. 51nod 1572 宝岛地图 (预处理四个方向的最大步数优化时间,时间复杂度O(n*m+k))
  4. CentOS安装SVN服务器并配置HTTPS连接
  5. 【OS】经典调度算法
  6. 用Python搭建“冲顶大会”外挂,王思聪们还舍得撒币吗?
  7. 删除或添加最大化、最小化按钮 - 回复 Tommy the CAT 的问题
  8. PTA:6-2顺序表操作集(20分)
  9. 微博 用户画像_新浪微博的用户画像是怎样构建的?
  10. UCOS操作系统——创建与删除任务(三)
  11. Python with as用法详解
  12. Linux的拓扑结构,linux底下的makefile框架拓扑结构分析
  13. Linux系统监控命令整理汇总-掌握CPU,内存,磁盘IO等找出性能瓶颈
  14. DOS控制台及其常用命令
  15. MySQL 中的 INSERT 是怎么加锁的?(荣耀典藏版)
  16. mysql全备和指定库和表备份,mysql日志的分类简介和作用, mysql加速跳过域名解析,mysql权限授予与收回,数据库实用篇~~Tring
  17. 2018年广东工业大学文远知行杯新生程序设计竞赛 1006 那天的延长线在今天β
  18. AutoJs学习-读取手机短信
  19. 我用 pyhton 做了款可开淘宝店赚钱的工具
  20. 金庸武功之““兰花拂穴手””--elk5.5安装

热门文章

  1. 2021年P气瓶充装报名考试及P气瓶充装模拟考试题库
  2. openHevc学习笔记:解码器中CTU的TU与PU解码
  3. Linux珍藏系列图书
  4. Python实现16进制转10进制算法及源码
  5. 木马盗用“风行播放器签名”流氓推广
  6. 每日新闻摘要:MS Office漏洞现在占攻击的70%
  7. 微软发布警告:黑客利用Office漏洞发动垃圾邮件攻击
  8. 如何用GoldWave将音频添加生成机械化音效
  9. 线性元件与非线性元件
  10. 智慧城市php源码,Niucms智慧城市生活系统V3.