以下人们对实例变量和方法参数的命名有什么约定 - 特别是当使用方法参数来设置ivars(实例变量)时?
在C++中,我过去经常使用m_ivars 的前缀.在C#中,我遵循了纯粹使用this.ivars 消除歧义的惯例.我已经采用了C++中的等价物(this->).
在目标C中我尝试了一些事情,但没有一个真的令人满意.
除非有人建议一些非常好的东西,否则我将不得不妥协(但请不要让我使用theargs 的前缀!),所以我很想听听大多数人说的话 - 尤其是来自那些一直使用ObjC的人.
在发布这个之前我做了一些尽职调查,并且发现了一些很好的资源:
他们给了我一些想法,但我仍然渴望听到别人在做什么.
[编辑]只是为了澄清:具体是你如何区分我正在寻找的方法和方法 - 无论是通过前缀还是其他技术.
[编辑2]感谢所有的回复和讨论要点.我不是要关闭这个,但只是说,正如我在评论中指出的那样,我接受了使用init args前缀的惯例the(以及setter args with new,无论如何我都在做).这似乎是力量的最佳平衡 - 即使我自己并不热衷于审美.
我试图通过示例显示前缀增量比后缀增量更有效.
理论上这是有道理的:i ++需要能够返回未增加的原始值并因此存储它,而++我可以返回增量值而不存储先前的值.
但是有一个很好的例子可以在实践中证明这一点吗?
我尝试了以下代码:
int array[100];
int main()
{
for(int i = 0; i < sizeof(array)/sizeof(*array); i++)
array[i] = 1;
}
Run Code Online (Sandbox Code Playgroud)
我使用gcc 4.4.0编译它,如下所示:
gcc -Wa,-adhls -O0 myfile.cpp
Run Code Online (Sandbox Code Playgroud)
我再次这样做,后缀增量更改为前缀增量:
for(int i = 0; i < sizeof(array)/sizeof(*array); ++i)
Run Code Online (Sandbox Code Playgroud)
在两种情况下,结果都是相同的汇编代码.
这有些出乎意料.似乎通过关闭优化(使用-O0)我应该看到显示概念的差异.我错过了什么?有更好的例子来展示这个吗?
我正在准备考试,我无法理解中缀符号的转换为以下表达式的波兰符号:
(a–b)/c*(d + e – f / g)
Run Code Online (Sandbox Code Playgroud)
任何人都可以一步一步地告诉给定的表达式如何转换为前缀?
我在python中学习ElementTree.一切似乎都很好,除非我尝试用前缀解析xml文件:
test.xml:
<?xml version="1.0"?>
<abc:data>
<abc:country name="Liechtenstein" rank="1" year="2008">
</abc:country>
<abc:country name="Singapore" rank="4" year="2011">
</abc:country>
<abc:country name="Panama" rank="5" year="2011">
</abc:country>
</abc:data>
Run Code Online (Sandbox Code Playgroud)
当我尝试解析xml时:
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
xml.etree.ElementTree.ParseError: unbound prefix: line 2, column 0
Run Code Online (Sandbox Code Playgroud)
我是否需要指定一些内容才能解析带有前缀的xml文件?
我是新手.我已经弄清楚如何在Win 7命令提示符中使用REN编辑批量文件.但是,这次我试图为所有文件添加前缀,但我无法做到.所有文件都是tif文件
例如,文件位于C:\ Users\user1\Desktop\Test_Folder每个文件夹内的文件以9开头.每个文件有5位数(即90200,90201,90202).
我想在每个文件名前面将它添加0(零),并更改为090200,090201,090203 ....
我试过:FOR%v IN(?????.tif)DO REN%v 0%v
我也尝试过:FOR %% a in(*.tif)DO REN"%% a""0%a"
请帮忙!谢谢
我有一个问题:我需要根据文件路径前缀节省空间的文件系统数据查找.换句话说,前缀搜索已排序的文本.你说,使用trie,我也想到了同样的事情.麻烦的是,尝试不够节省空间,没有其他技巧.
我有相当数量的数据:
我不想在内存中接近450M的任何地方吃东西.在这一点上,我很乐意在大约100M左右使用,因为前缀形式有很多冗余.
我正在使用C#来完成这项工作,并且直接实现trie仍然需要为文件中的每一行提供一个叶子节点.假定每个叶子节点都需要对最后一个文本块进行某种引用(32位,比如指向一个字符串数据数组的索引以最小化字符串重复),并且CLR对象开销是8个字节(使用windbg/SOS验证) ,我将花费> 96,000,000字节的结构开销,根本没有文本存储.
让我们看一下数据的一些统计属性.当塞进一个特里:
叶片产生的过剩率约为15%,多余的内部节点产生率为22% - 过量创建,我的意思是在构造期间创建的叶子和内部节点,但不是在最终的trie中,作为每种类型的最终节点数的一部分.
这是来自SOS的堆分析,指示使用最多内存的位置:
[MT ]--[Count]----[ Size]-[Class ]
03563150 11 1584 System.Collections.Hashtable+bucket[]
03561630 24 4636 System.Char[]
03563470 8 6000 System.Byte[]
00193558 425 74788 Free
00984ac8 14457 462624 MiniList`1+<GetEnumerator>d__0[[StringTrie+Node]]
03562b9c 6 11573372 System.Int32[]
*009835a0 1456066 23297056 StringTrie+InteriorNode
035576dc 1 46292000 Dictionary`2+Entry[[String],[Int32]][]
*035341d0 1456085 69730164 System.Object[]
*03560a00 1747257 80435032 System.String
*00983a54 8052746 96632952 StringTrie+LeafNode
Run Code Online (Sandbox Code Playgroud)
将Dictionary<string,int>被用于映射串块到索引到List<string>,并能特里施工后丢弃,虽然GC似乎并没有被删除它(一对夫妇明确集合了这个转储前完成) - !gcroot在SOS并不表示任何根,但我预计后来的GC会释放它.
MiniList<T> …
我想更改我的Xcode项目所在的文件夹名称.但是当我这样做时,我无法再构建我的项目了.它向我显示了2个错误:
自编译预编译头文件以来,Apple LLVM编译器3.0错误文件" 项目名称 -Prefix.pch"已被修改
有办法解决这个问题吗?
我正在使用DatacontractSerializer将我的domainModel序列化为xml文件.我得到的输出如下.
<z:anyType xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="1" xmlns:d1p1="DCSerialization_IGITApproach" i:type="d1p1:X" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<d1p1:Name z:Id="2">Ankit</d1p1:Name>
<d1p1:PointsDictionary xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" z:Id="3" z:Size="1">
<d2p1:KeyValueOfstringPointsArrayq9VX7VJJ>
<d2p1:Key z:Id="4">key1</d2p1:Key>
<d2p1:Value xmlns:d4p1="http://schemas.datacontract.org/2004/07/SerializationApproach" z:Id="5">
<d4p1:points z:Id="6" z:Size="2">
<d2p1:double>45.5</d2p1:double>
<d2p1:double>546.45</d2p1:double>
</d4p1:points>
</d2p1:Value>
</d2p1:KeyValueOfstringPointsArrayq9VX7VJJ>
</d1p1:PointsDictionary>
</z:anyType>
Run Code Online (Sandbox Code Playgroud)
我想摆脱这些"d1p1"名称空间前缀,只想要</PointDictionary>标签代替</d1p1:PointsDictionary>.我已经尝试将DataMember属性放在我的类属性上,但它并没有解决很多问题.由于最终用户可以编辑输出XML文件,因此与上面的文件相比,我希望看到更清晰的XML文件.
首要任务是仅通过代码控制它,如果不可能,则转到XSLT或任何其他模式.
serialization namespaces xml-serialization prefix wcf-serialization
为了理解Bulldozer为什么不合格,我一直在关注Agner Fog的优秀微架构书,在第178页的推土机下它有这一段.
最多三个前缀的指令可以在一个时钟周期内解码.对于具有三个以上前缀的指令,会有非常大的惩罚.具有4-7前缀的指令需要额外14-15个时钟周期才能进行解码.带有8-11前缀的指令需要额外增加20-22个时钟周期,带有12-14前缀的指令需要额外增加27-28个时钟周期.因此,不建议使用超过三个前缀来延长NOP指令.此规则的前缀计数包括操作数大小,地址大小,段,重复,锁定,REX和XOP前缀.三字节VEX前缀计为一,而两字节VEX前缀不计.转义码(0F,0F38,0F3A)不计算在内.
当我搜索前缀时,我的技术定义远远超出了我的能力.或者,建议每条指令限制为4条,这与上述摘录相冲突.
因此,简单来说,有人可以解释他们是什么/做什么以及为什么你可能想要将多达14+用于指令而不是分解?
> :t (+1)
(+1) :: Num a => a -> a
> :t (-1)
(-1) :: Num a => a
Run Code Online (Sandbox Code Playgroud)
为什么第二个不是功能?我必须写(+(-1))或有更好的方法吗?
prefix ×10
algorithm ×2
.net ×1
assembly ×1
c# ×1
c++ ×1
cmd ×1
coding-style ×1
elementtree ×1
file ×1
function ×1
haskell ×1
namespaces ×1
notation ×1
objective-c ×1
operators ×1
optimization ×1
project ×1
python ×1
rename ×1
trie ×1
x86 ×1
xcode ×1
xml ×1