最近我
asked a question关于如何清理我认为丑陋的代码.一个建议是创建一个扩展方法,它将执行所需的功能并返回我想要的功能.我的第一个想法是’太棒了! Extensions有多酷……“但经过一番思考后,我开始对使用Extensions有了第二个想法……
我主要担心的是,Extensions似乎是一种自定义的“快捷方式”,可以让其他开发人员难以遵循.我理解使用扩展可以帮助使代码语法更容易阅读,但是如何跟随幕后的声音呢?
以我之前的问题代码片段为例:
if (entry.Properties["something"].Value != null) attribs.something = entry.Properties["something"].Value.ToString();
现在用扩展名替换它:
public static class ObjectExtensions { public static string NullSafetoString(this object obj) { return obj != null ? obj.ToString() : String.Empty; } }
并使用语法调用:
attribs.something = entry.Properties["something"].Value.NullSafetoString();
定义一个方便的方法,但它真的值得另一个类对象的开销吗?如果有人想重用我的代码片段而不理解扩展,会发生什么?我可以像使用相同的结果一样轻松地使用语法:
attribs.something = (entry.Properties["something"].Value ?? string.Empty).ToString()
所以我做了一些挖掘,发现了一些关于使用Extensions的优点/缺点的文章.对于那些倾向于看看以下链接的人:
Extension Methods Best Practice
我无法确定哪种方式更好.自定义扩展执行我想要他们做的事情或更多显示的代码来完成相同的任务?我真的很想学习“真正的”开发人员对这个主题的看法……
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。