草庐IT

c++ - C程序员开始写C++有哪些坏习惯?

很难说这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visitthehelpcenter.关闭12年前.最近结束的一次讨论mock程序员在开始使用另一种语言编程时太接触到一种语言的坏习惯。最好的例子是Pascal程序员在开始编写C时开始#definebegin{和#defineend}。目标是尝试捕获C程序员开始使用C++时的坏习惯。说说你遇到的大不要。一个建议一个回答,请尽量达到一种最好的。对于那些对良好习惯感兴趣的人,请查看此question的公认答案.

java - 在实例变量和方法之前写 "this."是好还是坏风格?

我在C++和Java中的一个讨厌的(?)编程习惯是总是在调用或访问成员之前使用this。例如:this.process(this.event).我的一些学生对此发表了评论,我想知道我是否在教坏习惯。我的理由是:使代码更具可读性-更容易区分字段和局部变量。更容易区分标准调用和静态调用(尤其是在Java中)让我记住,这个调用(除非目标是最终的)可能会在不同的目标上结束,例如在子类中的覆盖版本中。显然,这对编译程序的影响为零,它只是可读性。那么我是让它或多或少地具有可读性吗?注意:我把它变成了一个CW,因为真的没有正确的答案。 最佳答案

c++ - 为原始指针(如所有权语义)返回 unique_ptr 的坏习惯?

我编写了一个静态工厂方法,它返回一个从另一个数据对象填充的新Foobar对象。我最近沉迷于所有权语义,想知道我是否通过让这个工厂方法返回一个unique_ptr来传达正确的信息。classFoobar{public:staticunique_ptrfactory(DataObjectdata);}我的目的是告诉客户端代码他们拥有指针。如果没有智能指针,我只会返回Foobar*。但是,我想强制删除此内存以避免潜在的错误,因此unique_ptr似乎是一个合适的解决方案。如果客户端想要延长指针的生命周期,他们只需在获得unique_ptr后调用.release()。Foobar*myFoo

c++ - pass-by-value-and-then-move 结构是一个坏习惯吗?

由于我们在C++中有move语义,现在通常这样做voidset_a(Aa){_a=std::move(a);}原因是,如果a是一个右值,则拷贝将被省略,并且只有一步。但是如果a是左值会发生什么?似乎会有一个复制构造,然后是一个move赋值(假设A有一个正确的move赋值运算符)。如果对象具有太多成员变量,则move分配的成本可能会很高。另一方面,如果我们这样做了voidset_a(constA&a){_a=a;}只有一份拷贝分配。如果我们要传递左值,我们可以说这种方式优于按值传递的习惯用法吗? 最佳答案 昂贵的move类型在现代C+

c++ - C++ 中的内部 typedef - 好风格还是坏风格?

我最近发现自己经常做的事情是声明与该类中的特定类相关的typedef,即classLorem{typedefboost::shared_ptrptr;typedefstd::vectorvector;////...//};然后在代码的其他地方使用这些类型:Lorem::vectorlorems;Lorem::ptrlorem(newLorem());lorems.push_back(lorem);我喜欢它的原因:它减少了类模板引入的噪音,std::vector变成Lorem::vector等。它用作意图声明-在上面的示例中,Lorem类旨在通过boost::shared_ptr进行引用

java - java是否有一个不会为坏数据抛出异常的int.tryparse?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Java:GoodwaytoencapsulateInteger.parseInt()howtoconvertastringtofloatandavoidusingtry/catchinjava?C#有Int.TryParse:Int32.TryParseMethod(String,Int32%)这个方法的好处是它不会为坏数据抛出异常。在java中,Integer.parseInt("abc")会抛出异常,如果发生这种情况,性能会受到很大影响。对于那些性能有问题的情况,有没有办法解决这个问题?我能想到的唯一其

java - java是否有一个不会为坏数据抛出异常的int.tryparse?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Java:GoodwaytoencapsulateInteger.parseInt()howtoconvertastringtofloatandavoidusingtry/catchinjava?C#有Int.TryParse:Int32.TryParseMethod(String,Int32%)这个方法的好处是它不会为坏数据抛出异常。在java中,Integer.parseInt("abc")会抛出异常,如果发生这种情况,性能会受到很大影响。对于那些性能有问题的情况,有没有办法解决这个问题?我能想到的唯一其

案例分析|如何消除代码坏味道

 一、背景开发一款Idea插件,实现对yaml文件的定制化格式检查。!!后指定的类路径是否准确yaml中的key是否equal类中field的namevalue是否能够转换成类中field的类型……完成代码功能上线后,使用过程发现很多问题。后在主管帮助下,对代码进行了重构。事后对重构前后代码的好坏进行分析总结,文章下面将从结构设计、代码可读性、鲁棒性3个角度对重构前后代码作比较。二、代码比较1 结构设计before:after:比较:after:增加抽象类中的celtVisitMapping层代码,对多个代码检查模块做统一代理。做了错误的捕获,后面也可以做一些其他的统一处理(日志、标识参数等)

案例分析|如何消除代码坏味道

 一、背景开发一款Idea插件,实现对yaml文件的定制化格式检查。!!后指定的类路径是否准确yaml中的key是否equal类中field的namevalue是否能够转换成类中field的类型……完成代码功能上线后,使用过程发现很多问题。后在主管帮助下,对代码进行了重构。事后对重构前后代码的好坏进行分析总结,文章下面将从结构设计、代码可读性、鲁棒性3个角度对重构前后代码作比较。二、代码比较1 结构设计before:after:比较:after:增加抽象类中的celtVisitMapping层代码,对多个代码检查模块做统一代理。做了错误的捕获,后面也可以做一些其他的统一处理(日志、标识参数等)

独家 | 6种让Python程序变慢的坏习惯

作者: ChristopherTao翻译:王可汗校对:王雨桐本文约1800字,建议阅读5分钟本文总结了Python代码中经常被忽略的影响代码的运行速度常见问题。随着Python的流行,用户数量也在增加。Python确实相对容易上手,也非常灵活,因此有更多可能的方式来实现一个函数。当有多种方法可以实现一件特定的事情时,这意味着每种方法都有优缺点。在本文中,我收集了6种编写Python代码的典型方法,这些方法可能导致相对较差的性能。一、不导入根模块在使用Python时,我们无法避免的一件事就是导入模块,无论是内置模块还是第三方模块。有时我们可能只需要其中的一个或几个函数或对象。在这种情况下,我们应