这是关于.NET库(DLL).
测量单元测试用例所涵盖的代码的选项有哪些?实际上值得努力(测量代码覆盖率)吗?我想要覆盖70%的代码可能太容易了,几乎不可能超过90%.
[编辑]另一个有趣的问题(由"E Rolnicki"提出)是:什么被认为是合理的覆盖率%?
当我在Linux上创建一个库时,我使用这个方法:
版本控制是这样的,如果您更改面向公众的方法,您可以构建到libhelloworld.so.2.0.0(并将1.0.0保留在原处),以便使用旧库的应用程序不会中断.
然而,命名为1.0.0的重点是什么 - 为什么不坚持使用libhelloworld.so和libhelloworld.so.1?
另外,最佳做法是使用1.0.0来命名您的库,还是仅仅1?
g++ ... -Wl,-soname,libhelloworld.1
Run Code Online (Sandbox Code Playgroud)
要么:
g++ ... -Wl,-soname,libhelloworld.1.0.0
Run Code Online (Sandbox Code Playgroud) 我们遇到Oracle死锁(org.hibernate.util.JDBCExceptionReporter - ORA-00060:在等待资源时检测到死锁)错误.有人建议问题在于使用Hibernate执行只读操作的进程,而另一个进程在同一行上执行更新.
有问题的只读进程是使用Hibernate和Spring配置的.我们没有明确定义服务的事务.虽然这可能不太理想 - 我不明白为什么Hibernate会在没有执行保存/更新操作时尝试在行上获得独占锁定 - 只有get/load.
所以我的问题是:当没有定义显式事务管理时,Hibernate是否尝试在一行上获得读/写锁,即使只执行了对象的"加载".不执行保存/更新.
是否有可能围绕正在加载数据的服务定义一个事务,然后在transactionAttributes上特别说READONLY会导致Hibernate忽略已经存在的行锁并只是加载数据以用于只读目的?
以下是一些代码示例:
为了加载记录,我们使用的是HibernateDaoTemplate
public class HibernatePurchaseOrderDataService extends HibernateDaoSupport implements PurchaseOrderDataService {
public PurchaseOrderData retrieveById(Long id) {
return (PurchaseOrderData)getHibernateTemplate().get(PurchaseOrderData.class, id);
}
}
Run Code Online (Sandbox Code Playgroud)
调用此方法的服务的Spring配置是:
<bean id="orderDataService"
class="com.example.orderdata.HibernatePurchaseOrderDataService">
<property name="sessionFactory" ref="orderDataSessionFactory"/>
</bean>
<bean id="orderDataSessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="hibernateDataSource"/>
<property name="hibernateProperties" ref="hibernateProperties"/>
<property name="mappingResources">
<list>
<value>com/example/orderdata/PurchaseOrderData.hbm.xml</value>
<value>com/example/orderdata/PurchaseOrderItem.hbm.xml</value>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
实际死锁发生在一个PurchaseOrderItem记录上,该记录是通过对LoadOrder的加载调用加载的.
如果正在加载的记录被另一个进程锁定,是否会导致死锁?如果是这样 - 添加一个事务包装器,如下面的那个解决问题?
<bean id="txWrappedOrderDataService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager"/>
<property name="target" ref="orderDataService"/>
<property name="transactionAttributes">
<props>
<!-- all methods require a transaction -->
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop> …Run Code Online (Sandbox Code Playgroud) 继这个问题之后,有人可以在Scala中解释以下内容:
class Slot[+T] (var some: T) {
// DOES NOT COMPILE
// "COVARIANT parameter in CONTRAVARIANT position"
}
Run Code Online (Sandbox Code Playgroud)
我明白之间的区别+T,并T在类型声明(它编译如果我使用T).但是,如何实际编写一个在其类型参数中具有协变性的类而不依赖于创建未参数化的东西?如何确保只能使用实例创建以下内容T?
class Slot[+T] (var some: Object){
def get() = { some.asInstanceOf[T] }
}
Run Code Online (Sandbox Code Playgroud)
编辑 - 现在得到以下内容:
abstract class _Slot[+T, V <: T] (var some: V) {
def getT() = { some }
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我现在有两个类型参数,我只想要一个.我会再问这个问题:
如何编写一个在其类型中具有协变性的不可变 Slot类?
编辑2:呃!我用过var而不是val.以下是我想要的:
class Slot[+T] (val some: …Run Code Online (Sandbox Code Playgroud) 我正在维护一个ASP.Net 2.0网站,该网站在GridView中显示产品.客户询问我是否可以每隔10行显示一个"添加到购物车"按钮.我可以通过将按钮放在自己的列中并翻转可见性来做到这一点,但我想知道是否可以在每10个项目之后注入一个新行.这会将按钮放在自己的行上,并且当它不可见时不会占用列空间.有关如何做到这一点的任何想法?TIA
我正在创建一个存储联系人的SQL数据库.我希望能够删除联系人,并且每个联系人的正确ID对于我连接到它的软件至关重要.让我们说我有联系詹姆斯,他是第一个.他的身份证是0.我加上玛丽,她的身份证是1.如果我删除詹姆斯,玛丽的身份证如何设置为0而不是1?它必须重置,因为她现在是第一个.换句话说,当有人被删除时,如何重置数据库中的所有ID?谢谢
我在库中找到了以下代码:
class Bar {
public:
bool foo(int i) {
return foo_(i);
}
private:
virtual bool foo_(int i) = 0;
};
Run Code Online (Sandbox Code Playgroud)
现在我想知道:你为什么要使用这个间接?可能有任何理由说明为什么上述会比简单的替代方案更好:
class Bar {
public:
virtual bool foo(int i) = 0;
};
Run Code Online (Sandbox Code Playgroud) 我现在必须重构一些代码,它基本上是一个方法(大约1000行代码),它做了很多计算并且有很多变量.我不确定如何重构它.代码是否像
...
calculateSth(param1,param2,param3,param4,param5, params6);
calculateSthElse(param1,param2,param3);
...
Run Code Online (Sandbox Code Playgroud)
看起来不错?
我可以引入参数对象,但这些对象只能用作某些方法的参数,所以它看起来像这样
...
calculateSth(calculateSthObject);
calculateSthElse(calculateSthElseObject);
...
Run Code Online (Sandbox Code Playgroud)
或者我可以将所有东西放在一个大物体上并制作它
...
calculateSth(calculateObject);
calculateSthElse(calculateObject);
...
Run Code Online (Sandbox Code Playgroud)
但是在该解决方案中,我必须在方法的开头提取私有方法中所需的所有内容并在最后设置,并且要找出私有方法中使用的值会更加困难.需要大约一半的变量作为输出.
你会怎么做?
PS计算并不简单,所以做的事情就像
calculateObject.setMagicValue4((calculateObject.getMagicValue() * calculateObject.getMagicValue2() / calculateObject.getMagicValue3())
Run Code Online (Sandbox Code Playgroud)
只会让人难以阅读.
我偶然发现了这段代码这似乎完全以打破我的,但它确实发生this的null.我只是不明白这是怎么回事null
它在一个普通的方法调用中,如
myObject->func();
Run Code Online (Sandbox Code Playgroud)
在里面MyObject::func()我们有
if (!this) { return false; }
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以让第一行抛出NullPointerException而不是进入null(?)方法?
我想通过为"Everyone"组分配权限来配置Mutex访问规则.当我创建我的规则时,它看起来像下面这样
new MutexAccessRule("Everyone", MutexRights.Modify | MutexRights.Synchronize | MutexRights.TakeOwnership | MutexRights.ReadPermissions, AccessControlType.Allow)
Run Code Online (Sandbox Code Playgroud)
如何获取本地化的"Everyone"组名称,以便在非英语版本的操作系统上运行.
谢谢
c++ ×3
.net ×2
asp.net ×1
c# ×1
covariance ×1
deadlock ×1
function ×1
generics ×1
gridview ×1
hibernate ×1
identity ×1
inheritance ×1
linux ×1
localization ×1
null ×1
oracle ×1
refactoring ×1
scala ×1
spring ×1
sql-server ×1
this ×1
unit-testing ×1