条款20:宁以pass-by-reference-to-const 替换 pass-by-value 即 以const引用 替换值传递. 采用引用传递参数时,底层往往是用指针方式实现,因此参数传递内置类型时,采用值传递方式往往效率更高. 如果函数参数是基类对象(值传递),传递实参时如果传递的是派生类对象,则可能会产生[切割现象]:而如果形参是const 基类引用,则不会有这个问题. 请记住: a 尽量以const引用 代替 值传递,通常前者效率较高,并且没有切割问题. b 以上规则并不适用于内置…
条款23:宁以non-member.non-friend替换member函数 即 以非成员函数 非友元函数 替换成员函数. 直观上,面向对象应该尽可能的封装,封装数据.封装操作等等,所以这个条款可能有悖常理. 比如一个类成员函数CObj::Func(){ Dosomething(); } 该函数会调用其他成员函数做一点微小的工作,想一下把成员函数换成普通函数Func2(const CObj& obj); Func2(const CObj& obj) { obj.Dosomething();…
条款18:让接口容易被正确使用,不易被误用 这里说的接口是广义上的接口,即包括但不限于函数接口.类接口.template接口等,每一种接口都是客户与你的代码进行交互的手段. 我们对客户的所谓“资质或水平”做出假设或要求,因此面对不同的客户,需要接口在形式上有足够的易用性以及足够的不被误用性. e.g. CDate(int year, int month, int day) 该类CDate的构造函数为三个int参数,分别代表年月日.客户在使用的时候很容易用错,比如写错顺序.写的日期不合法等,比较好…
条款07:为多态基类声明virtual析构函数 任何一本C++语法教材上都会讲这一点(如果没讲,扔掉它),这么做到原因是可以让delete pBase操作能够正确的执行子类的析构函数. 需要说明的是当一个类不是用来当作基类或者不是用来在多态场景下使用时,就不要为这个类的析构函数声明为virtual的,因为这会额外给这类加大体积. 条款08:别让异常逃离析构函数 别让析构函数中产生异常,如果非要产生则要么吞下(不传播),要么结束程序. 如果某个操作可能会抛出异常,则应该让其在一个普通函数中执行,而…
条款13:以对象管理资源 资源,包括但不限于内存.句柄.GDI对象.数据库连接等. 内存要记得释放,句柄要记得closehandle, GDI对象要记得删除,数据库连接要记得关闭,等等等等. 以对象来管理这些资源就是利用 对象的构造和析构 特性,在构造函数中获得资源并在析构函数中释放资源. 两个智能指针auto_ptr 和 std::tr1::shared_ptr,前者同一时刻只能指向同一个资源,赋值的一方不再指向这个资源,被赋值的一方指向这个资源.在析构函数中对对象调用delete(而不是de…
条款12:复制对象时勿忘其每一个成分 这里的复制是拷贝构造和operator= 每一个成分有几个维度: 1.每个成员变量 这个很好理解,添加新的成员时也要记得为每个新添加的成员执行合适的复制操作 2.每个基类的成员变量 在子类中调用可以调用基类的拷贝构造函数或者operator= e.g. class CObject : public CBase {}; CObject::CObject(const CObject& obj) : CBase(obj), val(obj.val){} CObje…
今天晚上回到小区门口,买了点冬枣,要结账的时候想起来,钥匙没带,落公司了! TNND,没办法再回趟公司,拿了钥匙,来回一个小时,汗~ 条款10:令operator=返回一个reference to *this 即赋值操作符返回引用. 原型 Object& operator=(const Object& obj) 同时,该协议还适用于所有的赋值操作. Object& operator=(int a)等形式 条款11:在operator=中处理“自我赋值” 即 Object&…
条款05:了解C++默默编写并调用哪些函数 如果没有为类定义构造函数.析构函数.拷贝构造函数.重载赋值操作符,并且这些函数被需要(调用)时,编译器会为类生成默认的函数,而这些函数是public inline的. 需要主意的是带引用成员的类和带const成员的类. 带引用成员的类,如果不为其主动编写operator=,则对象之间的赋值操作是不能编译通过的: 带const成员的类,如果不为其编写operator=,则对象之间的赋值是不能通过编译的. 条款06:若不想使用编译器自动生成的函数,就该明确…
博客好久没更新了,就从这本读书笔记开始吧. 条款01: 视C++为一个语言联邦 C++可视为有四个次语言组成的: 1.C语言 2.Object-Oriented C++ (面向对象C++) 3.Template C++(模版C++) 4.STL (标准模版库) 条款02:尽量以const, enum, inline替换#define 该条款中提到的const, enum, inline 替换#define主要是两个维度. 一个是数据,一个是函数. 1.使用const代替宏定义很容易理解, 另外该…
本文从良构,有效性,布局三个角度,结合往日项目开发经历, 整理总结重构HTML改善Web应用设计的几点规则和做法.部分参考自<重构HTML改善Web应用设计>. 重构.什么是重构?为什么要重构. 重构是在不改变程序行为的基础上进行小的改动,是代码逐渐改善的过程.移除长期累积下来的烂码,以得到更清晰和更容易维护,除错以及添加新功能的代码,这做法不能单纯只出现在编码的后期,甚至是你意识到你的代码已经无从再下手非重写不可的时候,而是从开始开发起,逐渐积累,逐渐修改.以前因为日常编码的随意性,导致问题…
package welcome; import java.util.Scanner; /* * 一个循环程序的设计范例 * 首先编写仅执行一次的程序(当无循环时) * 循环的设计步骤: * 1.确定程序中要重复执行的部分; * 2.加上循环模板 while(true){语句块;} * 3.重写循环控制条件,增加循环控制语句 */ public class SubtrationQuizLoop { public static void main(String[] args) { final int…
#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类Truck是Car类的子类,其中包含的属性有载重量payload.每个 类都有构造方法和输出相关数据的方法.最后,写一个测试类来测试这些类的功 能. package hanqi; public class Vehicle { private int wheels; private int weight…
最美丽的,现代化的和惊人的移动 UI 设计就在这里.今天,我们挑选了12个来自 Behance 和 Dribbble 网站的优秀用户体验的手机界面设计.这些界面设计作品都是由世界各地的优秀设计师分享,可以从中获取灵活,帮助你更好的设计出自己的优秀界面. 您可能感兴趣的相关文章 创意设计:折叠效果在移动App中的应用 经典设计:12个漂亮的移动APP网站案例 分享15套免费的扁平化界面设计素材下载 12套免费的 PSD 格式 Android UI 素材 40款 iPhone 和 iPad 应用程序…
今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故,已经把一些问题修复了,今天把问题写下来,告诉大家文中有些小问题需要修复一下. WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(Button,Label,Textbox控件等)必须由创建它的那个线程来更新.WinForm这方面的限制并不是很严格,所以像下面这样的代码,在Winform中的大部分…
1.本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点 1.2 使用常规方法总结其他上课内容. 为了不必要写重复的代码,可以运用继承,用关键字extends来定义一个类,被继承的类叫做父类,继承的类叫做子类,并且只能有一个父类.父类中的属性和方法子类可以引用,子类也可以建立自己的方法,但是父类不能引用.仔类的继承中,object是所有类的父类. 父类的初始化操作总是早于子类!对于子类重写的方法,JVM根据调用该方法的实际对象的类型来决定选择调用哪个方法.通过 instanceof 可以判…
每年都会有人说,IT行业饱和了,根本就找不到工作,其实,我想说的是,不是工作难找,而是你自己不够好! 前几天看到一CEO在微博上吐槽: 前几天招一算法工程师我们给了8万月薪*14+奖金,人家去阿里拿5万月薪.今天这个,直接不给谈薪酬机会.前几天在网易挖个人,原来年薪80万,我给了140+期权,网易直接给了200万+期权,还提拔副总裁.唉,做点小生意,咋就这难啊? 小编想知道,现在算法工程师的薪资都这这这这这么高啦!!! 所以不要再说,工作难找,真的是自己技术还没到啊!一般来说,IT行业的发展,算…
ASP.NET -- WebForm -- Cookie的使用 ASP.NET -- WebForm --  Cookie的使用 Cookie是存在浏览器内存或磁盘上. 1. Test3.aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test3.aspx.cs" Inherits="Test3" %> <!DOCTYPE html…
C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试截图: 服务端: 客户端 运行动态图 C#程序设计代码 BenXHSocket.dll主要代码设计 SocketObject类 /***************************************************** * ProjectName: BenXHSocket * De…
[前言] Blend自诞生那一天起就伴随这开发者如此的评价: 有VS还用Blend干啥,直接码代码就好了. Blend会生成一堆垃圾无用代码,很不爽. 对于这类我只会在心里评价,当你并不真正了解一样事物的情况下,就给这个东西扣帽子,实在很不公平. 作为程序员首先要明白时间的宝贵和效率的重要性,更应了解各种效能工具,Blend便是其中一个,如果你仍然觉得学怎么用Blend纯粹是浪费时间, 那么恭喜你,后面的文章可以忽略了:-) [本文讲述的内容] 使用blend为程序添加设计时的数据. [本文适用…
对改善程序性能的建议. 文章:https://msdn.microsoft.com/zh-cn/library/ms973838.aspx…
1.Ping程序设计具体设计任务 1.1 实验目的 PING程序是我们使用的比较多的用于测试网络连通性的程序.PING程序基于ICMP,使用ICMP的回送请求和回送应答来工作.由计算机网络课程知道,ICMP是基于IP的一个协议,ICMP包通过IP的封装之后传递. 课程设计中选取PING程序的设计,其目的是希望同学们通过PING程序的设计,能初步掌握TCP/IP网络协议的基本实现方法,对网络的实现机制有进一步的认识. 1.2 实验内容和要求 1.2.1 RAW模式的SOCKET编程 PING程序是…
最近一段时间,有不少CSDN读者朋友看了我写的中国象棋文章.其中,不少爱好者下载了中国象棋程序的初级版和高级版源码. 由于水平有限,不少同学遇到了若干问题,向我咨询,寻找解决办法. 我的处境1.如果我回答.  a.需要花费一些时间,尤其是自己忙碌的时候.    有的同学甚至要求我远程连接帮他解决问题.  b.很多问题比较"初级",耐心受到很大的挑战. 2.如果我不回答.  问我问题的人,大多是诚心学习技术的人,很多也是我的"粉丝".  a.打击别人的积极性.  b.…
使用微信小程序开发已经很长时间了,对小程序开发已经相当熟练了:但是作为一名对技术有追求的前端开发,仅仅熟练掌握小程序的开发感觉还是不够的,我们应该更进一步的去理解其背后实现的原理以及对应的考量,这可能会解释我们在开发过程中遇到的一些疑惑,比如为啥小程序不能操作dom.小程序是web技术渲染还是native技术渲染等等,另一方面对于我们个人成长也是有帮组的. 首先声明下,文章查看小程序开发者工具源码的方法仅限学习使用. 本文将从以下几个方面来说一下小程序的实现原理 如何查看小程序开发者工具源码 小…
下图是微信官方的要求 按照小程序UI设计(3)-符合视觉规范-列表视觉规范同样的方式,我们可以设计一样符合规范的输入项目.规范中没有说明padding-left的大小,我们暂定是15px.这样最外层view的padding-left和padding-right都是15px.以  为例制作符合规范的布局.首先在工具的画布上拖拽WViewRow. 然后设置width=375,padding-left和padding-right为15.再鼠标拖拽过来两个wviewrow,一个宽度是85,一个宽度是37…
上一篇我们介绍了字体规范,此贴介绍一下在列表中如何组合使用.下图是微信官方的要求   在工具中通过拖拽组件可以制作出一样的效果拖拽一个WViewRow.这个组件是小程序的view,flex-direction=row.缺省的属性如下. 放在工具的画布上是这样的 下面我们以  为例实际制作一个.此单项列表中一个view包括两个view,横向排列.最外层的view有margin-top.padding-left和padding-right.我们先定义最外层view.为了看的清楚我先把画布改成蓝色(修…
工欲善其事必先利其器.下面为大家介绍一款工具软件,如何做到轻松布局. 工具简介:小程序layout设计工具,可视化方式进行小程序UI设计.通过鼠标拖拽组件方式进行UI布局.工具提供符合微信视觉统一的模板,并且按照FlexBox方式可视化布局.自动生成wxml和wxss,复制到微信开发者工具中即可同步显示.视频介绍请移步优酷http://v.youku.com/v_show/id_XMTgyNTQ4NDcyMA==.html 我们平时开发工作中都会有这种情况发生,为了能够完成一个布局,css改了之…
目录 C语言程序与设计:统计素数并求和 1.题目要求 2.分析 3.代码 C语言程序与设计:统计素数并求和 1.题目要求 输入两个正整数 m 和 n(1≤m≤n≤500),统计给定整数 m 和 n 区间 内素数的个数并对它们求和 2.分析 emmm,我太懒了,不写了 3.代码 #include<stdio.h> #include<math.h> void primenum(int m, int n); int main() { primenum(1, 10); return 0;…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1060,1010上串行NOR Flash冗余程序启动设计. 工业产品设计里经常会有冗余程序/备份程序设计的需求,因为在工业环境里要求设备能够持续稳定运行,不能轻易宕机,但现实环境中常常有各种意外发生,其中一个常见的意外就是设备主控 MCU 程序被破坏.为了降低程序损坏这种意外带来的影响,一个很典型的做法就是增加 MCU 程序的份数,第一份被破坏,就启动第二份...,用程序数量的增加来降低启动失败率,这属于概率学手段范畴…
第一章  Java开发中通用的方法和准则 建议1:不要在常量和变量中出现易混淆的字母: (i.l.1:o.0等). 建议2:莫让常量蜕变成变量: (代码运行工程中不要改变常量值). 建议3:三元操作符的类型务必一致: (不一致会导致自动类型转换,类型提升int->float->double等). 建议4:避免带有变长参数的方法重载: (变长参数的方法重载之后可能会包含原方法). 建议5:别让null值和空值威胁到变长方法: (两个都包含变长参数的重载方法,当变长参数部分空值,或者为null值时…
写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了几个晚上的空闲时间敲了一个,目前仅支持单聊,群聊,文件传送这些功能.首先,贴出一个丑丑的程序图(UI是用java swing写的,这个早就忘光了,无奈看着JDK的API写了一个),如下图: 服务端设计: 服务端主要有两个操作,一是阻塞接收客户端的socket并做响应处理,二是检测客户端的心跳,如果客…