- 浏览: 3047621 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
いや、这篇只是个rant……
好吧我要好好说中文。思维进入混乱模式了(T T
刚才在读一段代码的时候看到了一个不怎么有趣的方法:
方法有注释。方法体也就几行。问题是什么呢?且不提这方法在循环中使用了String的+=运算符而生成了很多无用对象……
问题是——这明显就是重复劳动。.NET Framework里的BCL里有充分的工具方法来处理对象转换到字符串的问题以及伴随的格式化问题。
最常见的应用场景之一应该是控制台输出吧,像是:
这里用的到了IFormatProvider规定的一些功能。
更直接的,Int32和Int64之类的类型本身就实现了IFormattable接口,所以我们可以把前面我说无趣的方法改成:
一句解决。
这例子本身很简单,不过有一个问题就是,在不熟悉自己所使用的库的时候,很可能会写出类似的重复代码。如果能有什么自动的方法检查出这些重复的代码就好了。不过当前到底有什么分析工具能把像上面的“功能不完整”的重复代码抓出来呢?
在那样强悍的工具出现前,咱们还是自己好好认识清楚自己用的库吧~
微软的Phoenix编译器框架确实非常的强悍,但是能不能检测出这样的重复代码我还没试来看看……
P.S. 嗯这篇就是吐槽……正在读的这代码里的重复逻辑太多了!
好吧我要好好说中文。思维进入混乱模式了(T T
刚才在读一段代码的时候看到了一个不怎么有趣的方法:
/// <summary> /// Add enough zeros to a number as to be represented on 4 characters /// </summary> /// <param name="offset"> /// The number that must be represented on 4 characters /// </param> /// <returns> /// </returns> private string GetExpandedOffset( long offset ) { string result = offset.ToString( ); for ( int i = 0; result.Length < 4; i++ ) { result = "0" + result; } return result; }
方法有注释。方法体也就几行。问题是什么呢?且不提这方法在循环中使用了String的+=运算符而生成了很多无用对象……
问题是——这明显就是重复劳动。.NET Framework里的BCL里有充分的工具方法来处理对象转换到字符串的问题以及伴随的格式化问题。
最常见的应用场景之一应该是控制台输出吧,像是:
System.Console.WriteLine("{0}=0x{0:X}", anIntVariable);
这里用的到了IFormatProvider规定的一些功能。
更直接的,Int32和Int64之类的类型本身就实现了IFormattable接口,所以我们可以把前面我说无趣的方法改成:
private string GetExpandedOffset( long offset ) { return offset.ToString( "D4" ); }
一句解决。
这例子本身很简单,不过有一个问题就是,在不熟悉自己所使用的库的时候,很可能会写出类似的重复代码。如果能有什么自动的方法检查出这些重复的代码就好了。不过当前到底有什么分析工具能把像上面的“功能不完整”的重复代码抓出来呢?
在那样强悍的工具出现前,咱们还是自己好好认识清楚自己用的库吧~
微软的Phoenix编译器框架确实非常的强悍,但是能不能检测出这样的重复代码我还没试来看看……
P.S. 嗯这篇就是吐槽……正在读的这代码里的重复逻辑太多了!
评论
1 楼
RednaxelaFX
2008-11-08
说来,最近在读的一些代码里看到new Type[ 0 ]这样的东西。这也是属于没有know your library才会这样写。Type.EmptyTypes就是一个专门用来表示new Type[ 0 ]的静态只读域,没必要每次都分配一个空数组出来……
发表评论
-
C#的任意类型转换
2010-09-22 19:37 0用之前的恶搞办法制造一个Func<T, U>委托来 ... -
timer与GC
2010-02-25 21:54 0CLR via C# 3rd的第21章讲解了GC相关的内容。其 ... -
CLR中值类型的实现,几个小测试
2009-12-07 17:35 0http://blogs.msdn.com/clrcodege ... -
Array.Copy()
2009-12-02 23:03 0using System; namespace Cons ... -
关于GC.KeepAlive()
2009-12-01 23:16 0调用GC.KeepAlive()确实跟调用自己写的NoInli ... -
native code一样的方法就是一样的么?
2009-10-10 11:42 0GC map EH SOS -
SRE里的Builder系列到Info系列的转换
2009-09-23 03:01 1695如果你试用(没错字,我就是说“试用”而不是“使用”)过Syst ... -
反射还真会挂……
2009-09-22 22:44 3075呃,CLR的反射也可以注入字符串……看来这里也有可玩的突破口 ... -
CLI中方法的局部变量声明
2009-09-15 10:36 0.locals init( int32 val ... -
要让CLR挂掉的话(第二弹)……
2009-09-04 03:26 12870(Disclaimer:如果需要转 ... -
要让CLR挂掉的话……
2009-09-02 16:53 4775(Disclaimer:如果需要转载请先与我联系。 作者:Re ... -
JIT与观察调用栈
2009-07-04 03:53 0Massimiliano Mantione在他的Chasing ... -
CLR上的接口调用也是在运行时检查的
2009-06-02 17:14 2688作者:RednaxelaFX 主页:http://rednax ... -
值类型上的实例方法
2009-05-29 22:15 0.NET里任何实例方法都有一个隐含的this作为第一个参数,无 ... -
call与callvirt、虚方法与非虚方法的组合
2009-05-29 21:31 0Chris Brumme: Virtual and non-v ... -
CLR 2.0的callsite caching
2009-05-29 01:52 0根据http://blogs.msdn.com/vancem/ ... -
.NET中各种黑历史般的名字
2009-05-24 04:29 0dotnetfx: .NET Frameworks COM+ ... -
.NET 4的新动向
2009-05-23 19:58 0http://weblog.ikvm.net/PermaLin ... -
.NET Framework 4 Beta 1与对应的IronPython 2.6的下载
2009-05-21 02:43 1810与先前报导的一致,微软在今天放出了.NET Framework ... -
自己关于VM的帖的目录
2009-04-07 14:02 69493JavaEye的blog系统只允许把帖放到单一类别下,而不能用 ...
相关推荐
" —— Do you know if the Shanghai Library is open on Sundays? 10. "Who does he want to see?" —— Didn't he tell you who he wanted to see? **III. 选择填空** 这部分练习考察的是宾语从句的语序和时态。 ...
- **第三章:认识变量——基本类型和引用类型**(Know Your Variables: Primitives and References) - 区分 Java 中的基本数据类型和引用数据类型。 - 掌握变量声明、赋值和使用的规则。 - 学习数组的定义和使用...
library 解析:“eraser”中的“a”的发音为/eɪ/,与“lady”中的“a”的发音一致。 3. **umbrella** A. fun B. **computer** C. music 解析:“umbrella”中的“u”的发音为/ʌ/,与“computer”...
2. 介绍语:在英语中,当介绍不认识的人时,如 "Bai Mei doesn't know Liu Hui, so Zhuang Hua _________ her to Liu Hui.",正确的动词是 "introduce",即 "Zhuang Hua introduces her to Liu Hui." 3. 常识理解:...
——Amy, do you know how to _____ “6:45” in English?** - **解析与答案:** A.speak;six forty-five B.tell;forty-five past six C.talk;a quarter to six D.say;a quarter to seven - 正确答案为 **D.say;a...
【初中英语语法梳理及练习——动词】 动词在英语语法中扮演着核心角色,它不仅表达动作(如study, find, swim),还表达状态(如be, like, feel)。动词具有丰富的变化,包括人称、数量、时态、语态和语气,这些...
- "To complete the report in time, Ann spent three days in the school library."(为了及时完成报告,安在学校图书馆花了三天时间。) - "You don’t have to run fast or for long to see the benefit."(你...
* to know this, so we'll just add it in for them. */ numbytes = numbytes + sizeof(struct mem_control_block); /* Set memory_location to 0 until we find a suitable * location */ memory_...
标题和描述中提到的是关于“2018_2019年高考英语学业水平测试一轮复习”的内容,特别关注了“书面表达话题6”——兴趣与爱好。这个话题涉及了众多与兴趣爱好相关的英语词汇和实用句型,旨在帮助学生在高考中能够有效...
- **解读:** 这句话传达了一个重要的哲学思想——经历痛苦之后会带来快乐。它鼓励学生面对学习中的困难时保持积极的态度,相信通过努力克服挑战后,将会获得成就感和满足感。 #### 学习目标与重难点 - **学习目标:*...