小编Evi*_*ach的帖子

在测试之前,您倾向于编写多少代码?

多年来我注意到,我倾向于编写一个充满代码的屏幕,然后进行测试以确保它能够完成应有的操作.

这种技术的一些好处是

语法错误是新代码的结果,因此您无需远远查找原因.

设置临时条件很便宜,可以让你测试if语句的else子句,这样你就可以确保在测试成本低廉时得到错误消息等.

你如何倾向于编码?
这样做会带来什么好处?

编辑:像我的大多数问题一样,我真的没有充分确定上下文.我并不是在谈论单元测试级别的粒度.我指的是在实现时确保本地代码完全符合我的意图.

testing

1
推荐指数
1
解决办法
524
查看次数

Qt和VC ++ 6.0 IDE?

首先,我想知道是否应该同时使用Qt和Windows。如果是这样,我应该使用VC ++ 6.0 IDE还是另一个?

c++ windows user-interface qt visual-c++-6

1
推荐指数
1
解决办法
1254
查看次数

为什么"%.3i"打印前导零?

今天的代码有些令人惊讶.我在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"在这里真正意味着什么?

它为什么会有这样的行为?

c printf text-formatting

1
推荐指数
1
解决办法
3775
查看次数

如何通过Oracle廉价验证另一个模式中表中列的存在?

环境是Oracle 9和10.我没有DBA级别的访问权限.

问题是在另一个模式中验证特定表中是否存在特定列.

有两种情况需要处理.

  1. 同一实例中的另一个模式
  2. 使用db_link在不同实例中的模式

鉴于我的模式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 oracle database-link ora-00942

1
推荐指数
1
解决办法
897
查看次数

使用列名向量,生成一个sql语句

我们需要在工作场所定期解决的问题是如何根据用户提供的表/列名称构建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)

我并不特别被这些实现中的任何一个所吸引.

我很有兴趣听到其他解决这个问题的方法的想法,着眼于使代码更容易阅读/理解/维护.

有哪些替代技术?

c++ sql idioms

0
推荐指数
1
解决办法
1067
查看次数

是否有任何项目规划工具可以处理估算范围?

有人建议,在进行估算时,应在预期的交货时间内设定较低和较高的范围.我见过的少数项目工具似乎需要一个固定的日期.是否有任何工具支持估算范围的概念?

project-management estimation

0
推荐指数
1
解决办法
432
查看次数

VC++ 6中'for循环'的终止条件是否刷新?

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

c++ for-loop termination visual-c++-6 visual-c++

0
推荐指数
1
解决办法
1169
查看次数

我在这里制作结构副本吗?

这是一个伪代码示例

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].

我正在考虑在这里做正确的事情,就是把我自己的头脑转过头几次,把它变成一个指针实现并继续我的生活.

我是否正确诊断了这个?还是我需要更多的教育?

c++ reference overwrite

0
推荐指数
1
解决办法
206
查看次数

在Oracle CONNECT BY查询中是否有ORDER BY管理器DESCENDING的方法?

在这个场景中......

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)

oracle connect-by sql-order-by

0
推荐指数
1
解决办法
1368
查看次数