在每日工作中,我遇到了这种困境:
"稳定的系统与更好的设计"
在我正在修理一些模块的日常工作中,当我看到糟糕的设计时
- >编写错误的代码
- >写得不好的算法
- >优化可能
我更愿意修复这些以及我正在解决的问题
但很多人反对我的改变一些支持,反对的人会说
"如果系统稳定,你应该以业务为导向,如果你改变某些东西可能会导致回归,因此不喜欢业务"
一段时间:
6个月后你会看到你自己的书面代码,总是你会看到一些改进的机会
虽然谁支持会说:
这是持续改进,系统将更加稳定
所以我想知道你们的想法
我想知道cronWindows中是否存在等效项,以及如何使用PHP以编程方式使用它.
如果您在团队中并且程序员为您提供了创建,读取,更新和删除方法的界面,那么如何避免类型切换?
引用清洁代码敏捷软件工艺手册:
public Money calculatePay(Employee e)
throws InvalidEmployeeType {
switch (e.type) {
case COMMISSIONED:
return calculateCommissionedPay(e);
case HOURLY:
return calculateHourlyPay(e);
case SALARIED:
return calculateSalariedPay(e);
default:
throw new InvalidEmployeeType(e.type);
}
}
Run Code Online (Sandbox Code Playgroud)
这个功能有几个问题.首先,它很大,当添加新的员工类型时,它会增长.其次,它显然不止一件事.第三,它违反了单一责任原则7(SRP),因为改变的原因不止一个.第四,它违反了开放封闭原则8(OCP),因为每当添加新类型时它必须改变.但是这个函数最糟糕的问题可能是有无限数量的其他函数具有相同的结构.例如,我们可以
isPayday(Employee e, Date date),
Run Code Online (Sandbox Code Playgroud)
要么
deliverPay(Employee e, Money pay),
Run Code Online (Sandbox Code Playgroud)
或许多其他人.所有这些都具有相同的有害结构.
这本书告诉我使用工厂模式,但这让我觉得我不应该真正使用它.
再次引用这本书:
这个问题的解决方案(参见清单3-5)是将switch语句埋在一个抽象工厂9的地下室,永远不会让任何人看到它.
switch语句难看吗?
#include <time.h>
time_t start,end;
time (&start);
//code here
time (&end);
double dif = difftime (end,start);
printf ("Elasped time is %.2lf seconds.", dif );
Run Code Online (Sandbox Code Playgroud)
我的开始和结束时间都是0.000.我不理解错误的来源.
最好还是使用time(start)和time(end)或start = clock()和end = clock()来计算经过的时间.
我需要将数值转换为字节数组.例如,要将long转换为byte数组,我有以下方法:
public static byte[] longToBytes(long l) {
ByteBuffer buff = ByteBuffer.allocate(8);
buff.order(ByteOrder.BIG_ENDIAN);
buff.putLong(l);
return buff.array();
}
Run Code Online (Sandbox Code Playgroud)
这很简单 - 花一点时间,分配一个可以容纳它的数组,然后把它扔进那里.无论价值l是多少,我都会得到一个8字节的数组,然后我可以按照预期进行处理和使用.就我而言,我正在创建一个自定义二进制格式,然后通过网络传输它.
当我使用值773450364调用此方法时,我得到一个数组[0 0 0 0 46 25 -22 124].我有代码也将字节数组转换回它们的数值:
public static Long bytesToLong(byte[] aBytes, int start) {
byte[] b = new byte[8];
b[0] = aBytes[start + 0];
b[1] = aBytes[start + 1];
b[2] = aBytes[start + 2];
b[3] = aBytes[start + 3];
b[4] = aBytes[start + 4];
b[5] = aBytes[start + 5];
b[6] = aBytes[start + 6];
b[7] …Run Code Online (Sandbox Code Playgroud) 我的目标主要集中在软件应用程序开发,也许是Web应用程序开发,但很可能是桌面应用程序.我正在走上越来越熟悉C/C++的道路,但是我应该比这更低,进入装配?或者我的长期目标没有好处?
两者都是数学值,但浮点数确实更高.这是错误的唯一原因 - 精度的差异?还是有另一个潜在的(也是更严重的)问题?
我想基于此创建动态内容.我知道它在某个地方,因为网络分析引擎可以获取这些数据来确定人们如何访问您的网站(推荐人,使用的搜索术语等),但我不知道如何自己解决这个问题.
我在一个类中有一个即将推出的项目,它允许我使用EJB或Spring,我想知道什么更适用于"真实世界"的情况.