Mug*_*nth 8 rest coding-style naming-conventions ios
我知道这个问题已被问过好几次,但我的情况略有不同.在将其作为副本关闭之前,请完整阅读.堆栈溢出上有很多帖子说:"就个人而言,我讨厌MACROS,不要使用那个狗屎".我读过所有这些,我的情况有所不同.我正在尝试使用#define宏定义软件(iOS应用程序)中使用的URL.
我同意使用const字符串比#define宏更好.但是,在越来越多基于REST的API世界中,接受查询参数作为URL的一部分,您如何仍然使用const字符串来表示更改的URL?
而不是http://api.myblog.com/posts?entryid=%@ 遵循REST原则的API服务器 http://api.blog.com/posts/entries/[entryid]
在前一种类型中,所有条目的URL都是http://api.myblog.com/posts,它们不会更改.const字符串是可能的.
在后一种类型中,URL随每个条目而变化,我使用宏扩展为这样的完整URL.
#define GET_ENTRY_URL(__MY_ENTRY_ID__) [NSString stringWithFormat:@"http://api.myblog.com/posts/entries/%@", __MY_ENTRY_ID__];
Run Code Online (Sandbox Code Playgroud)
我的方法有任何设计缺陷吗?想知道你的意见.
谢谢.
小智 4
从编译器的角度来看,#define是一个预处理器指令(参考c中的定义,http://en.wikipedia.org/wiki/C_preprocessor)。
在这种情况下,编译器可能会在编译代码之前进行整个文本替换。
例如:如果您定义:
#define GET_ENTRY_URL(__MY_ENTRY_ID__) [NSString stringWithFormat:@"http://api.myblog.com/posts/entries/%@", __MY_ENTRY_ID__];
Run Code Online (Sandbox Code Playgroud)
它可能会在代码中将每次出现的 GET_ENTRY_URL(x) 替换为 [NSString ..., x] 。如果 Objective-c 的实现遵循这一点,则可能会在我们使用宏的任何地方创建实例。
static const/variable 似乎是更好的方法。
| 归档时间: |
|
| 查看次数: |
15271 次 |
| 最近记录: |