多年来我注意到,我倾向于编写一个充满代码的屏幕,然后进行测试以确保它能够完成应有的操作.
这种技术的一些好处是
语法错误是新代码的结果,因此您无需远远查找原因.
设置临时条件很便宜,可以让你测试if语句的else子句,这样你就可以确保在测试成本低廉时得到错误消息等.
你如何倾向于编码?
这样做会带来什么好处?
编辑:像我的大多数问题一样,我真的没有充分确定上下文.我并不是在谈论单元测试级别的粒度.我指的是在实现时确保本地代码完全符合我的意图.
首先,我想知道是否应该同时使用Qt和Windows。如果是这样,我应该使用VC ++ 6.0 IDE还是另一个?
今天的代码有些令人惊讶.我在AIX上编译它,将警告级别设置为anal,以查看潜在的问题可能潜伏在哪里.从代码中抓取的新东西.
1540-2837 (W) '0' flag is disregarded when combined with
precision and 'i' printf format.
Run Code Online (Sandbox Code Playgroud)
看完有问题的一行之后,我整理了一个小程序来重现它.在几个平台上测试它表明它不是AIX特有的.
下面的第一个printf模仿程序中发现的内容.
#include <stdio.h>
int main(void)
{
int x = 3;
printf("Format 0.3i <%0.3i>\n", x); // prints 003, and AIX does a warning
printf("Format .3i <%.3i>\n", x); // prints 003, with no warning
printf("Format 3i <%3i>\n", x); // prints 3, with no warning.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
通常情况下,如果需要前导零,格式为"03i"可以很好地完成工作.
"%.3i"在这里真正意味着什么?
它为什么会有这样的行为?
环境是Oracle 9和10.我没有DBA级别的访问权限.
问题是在另一个模式中验证特定表中是否存在特定列.
有两种情况需要处理.
鉴于我的模式FRED和另一个模式BARNEY,我试过这样的事情
SELECT 1
FROM BARNEY.USER_TAB_COLS
WHERE TABLE_NAME = 'SOME_TABLE'
AND COLUMN_NAME = 'SOME_SPECIFIC_COLUMN'
Run Code Online (Sandbox Code Playgroud)
产生了[1] :(错误):ORA-00942:表或视图不存在
在这一段时间过后,我意识到USER_TAB_COLS,实际上不是一个表.这是一种观点.我一直在从表中选择,但不是从视图中选择.
我用db_link尝试了同样的事情,并惊讶地看到数据回来了.db_link中有一个嵌入式schema_name /密码,所以我觉得它有用,因为它有效地登录到另一个模式,这应该使视图可以访问.
谷歌搜索了我的眼球,并在Oracle医生的山上磨了我的眼球,我正在寻找有人指出我正确的方向,或者至少指出我错过了什么.
有哪些技术可用于从同一实例中的模式获取与用户表相关的元数据,以验证特定列是否存在?
提前致谢.
邪恶.
+1为好的答案.谢谢.
我们需要在工作场所定期解决的问题是如何根据用户提供的表/列名称构建sql语句.我想解决的问题是列名之间的逗号.
一种技术看起来像这样.
selectSql = "SELECT ";
for (z = 0; z < columns.size(); z++)
{
selectSql += columns[z]._name;
selectSql += ", ";
}
selectSql = selectSql(0, selectSql.len() - 2);
selectSql += "FROM some-table";
Run Code Online (Sandbox Code Playgroud)
另一种技术看起来像这样
selectSql = "SELECT ";
for (z = 0; z < columns.size(); z++)
{
selectSql += columns[z]._name;
if (z < columns.size() - 1)
selectSql += ", ";
}
selectSql += "FROM some-table";
Run Code Online (Sandbox Code Playgroud)
我并不特别被这些实现中的任何一个所吸引.
我很有兴趣听到其他解决这个问题的方法的想法,着眼于使代码更容易阅读/理解/维护.
有哪些替代技术?
有人建议,在进行估算时,应在预期的交货时间内设定较低和较高的范围.我见过的少数项目工具似乎需要一个固定的日期.是否有任何工具支持估算范围的概念?
for (int i = 0 ; i < stlVector.size() ; i++)
{
if (i == 10)
{
stlVector.erase(stlVector.begin() + 5 )
}
}
Run Code Online (Sandbox Code Playgroud)
终止条件部分"stlVector.size()"是否考虑"stlVector.erase(...)"?换句话说,每次循环迭代都会刷新stlVector.size()吗?我现在无法测试,所以我在这里发了一个问题.
Thx提前!
最好的祝福,
zhengtonic
这是一个伪代码示例
vector<Fred> gFred;
{
// init gFred
Fred &fred = gFred[0];
size_t z = 0;
do
{
fred = gFred[z];
// do odd processing with fred
z++;
}
while (fred.lastElementInSet == 0);
}
Run Code Online (Sandbox Code Playgroud)
引起我注意的是gFred [0]被覆盖的事实.这让我认为,而不是将init作为对新元素的引用,
fred = gFred[z];
Run Code Online (Sandbox Code Playgroud)
实际发生的是gFred [1]覆盖了gFred [0].
我正在考虑在这里做正确的事情,就是把我自己的头脑转过头几次,把它变成一个指针实现并继续我的生活.
我是否正确诊断了这个?还是我需要更多的教育?
在这个场景中......
CREATE TABLE emp
(
empno NUMBER(4) NOT NULL,
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
sal NUMBER(7,2),
deptno NUMBER(2)
);
INSERT INTO EMP VALUES(7782, 'CLARK', 'MANAGER', 7839, 2450, 10);
INSERT INTO emp VALUES(7369, 'SMITH', 'CLERK', 7902, 800, 20);
INSERT INTO EMP VALUES(7499, 'ALLEN', 'SALESMAN', 7698, 1600, 30);
INSERT INTO EMP VALUES(7521, 'WARD', 'SALESMAN', 7698, 1250, 30);
INSERT INTO EMP VALUES(7566, 'JONES', 'MANAGER', 7839, 2975, 20);
INSERT INTO EMP VALUES(7654, 'MARTIN', 'SALESMAN', 7698, 1250, 30);
INSERT INTO EMP VALUES(7698, 'BLAKE', 'MANAGER', …Run Code Online (Sandbox Code Playgroud) c++ ×4
oracle ×2
sql ×2
visual-c++-6 ×2
c ×1
connect-by ×1
estimation ×1
for-loop ×1
idioms ×1
ora-00942 ×1
overwrite ×1
printf ×1
qt ×1
reference ×1
sql-order-by ×1
termination ×1
testing ×1
visual-c++ ×1
windows ×1