
什么时候
测试时传指针更难写,因其引入外部可变状态导致测试污染、并发不安全、mock复杂;应优先用值接收者,仅当需修改接收者本身或大对象性能敏感时才用指针。
C#单例模式有多种实现,推荐Lazy+readonly字段方案,线程安全且支持延迟初始化;staticclass无法替代,因其不支持接口、继承、泛型约束、IDisposable及按需初始化。
std::move仅是将左值转为右值引用的类型转换,不执行移动操作;若对象无移动语义则退化为拷贝;仅对管理堆内存的类型有意义,移动后原对象处于有效但未指定状态,不可再读取。
endl会强制刷新缓冲区,\n不会;endl输出换行符并调用flush(),\n仅插入换行字符,刷新依赖缓冲区状态;频繁输出时endl性能开销大;必须用endl的场景包括调试崩溃前输出、交互式程序提示...
HTML5响应式图片核心是、srcset和sizes:srcset按设备像素比或宽度选图,sizes告知浏览器图片渲染宽度以精准匹配资源,支持媒体查询实现艺术指导;三者需与CSS容器同步维护。
应优先按需分配而非均分:固定高区域用px/rem,内容驱动区域用minmax(),避免fr单位撑开行;慎用dense以防破坏可访问性;gap与justify/align-content作用不同,前者控...
RTTI是C++标准组成部分,含typeid、dynamic_cast和异常类型识别;dynamic_cast依赖vtable实现安全向下/横向转换,仅适用于多态类型,失败时指针返回nullptr、引...
预分配容量可避免多次底层数组复制,显著降低拷贝开销和内存分配次数;make([]T,0,N)中0为初始长度、N为容量,应按实际需求合理预估而非盲目设大。
必须用Task或Task时:需await、参与异步流或返回结果;async方法仅允许返回Task、Task、void、ValueTask、ValueTask,其中void仅限UI事件处理器。
哨兵错误仅适用于语义明确、无上下文、跨包契约稳定的场景;需用var全局定义,供调用方做确定性分支判断,且不可携带动态信息;滥用会导致耦合与演进锁死。