我在一家软件开发公司工作,我们有大约100人从事产品工作,其中1/3是QA.最近管理层希望有一种更好的方式来评估个别程序员的表现,因此建议使用错误报告作为衡量标准.关于开发人员的错误报告越多,他就越糟糕.由于更多的原因,这似乎是不明智的,因为它是一种主观的测量方法,开发人员在不同复杂程度的项目上工作.此外,如果根据他们生成的错误报告的数量来衡量质量保证,那么将会有很多关于错误报告有效性的讨论.
在这样的环境中衡量开发人员绩效的更好方法是什么?
一个建议是不使用来自QA的错误报告作为衡量标准,而是使用来自外部的错误报告,例如beta测试人员,然后当发布此类公开错误报告时,也要让QA通过它来衡量.
编辑:#1在阅读了一些优秀的回复后,我认为上述指标的一般问题是它是负面的报告错误 - 它不鼓励产生高质量的代码.
编辑:#2我认为问题在于它是两个世界.一方面有非程序员基本上将程序员视为工人,他们最好需要度量单位/分钟.然后我们让程序员想要把自己视为艺术家或工匠,"请不要打扰我,我正在编码":)我不认为测量质量可以通过指标来完成,而不是适得其反.相反,一个人如何对错误做出反应,改变意愿,创造力以及最重要的工作质量是重要的,但大多数情况下不一定是可衡量的.
在Jon的网站上,他在C#中使用了这个优雅设计的单例,如下所示:
public sealed class Singleton
{
Singleton()
{
}
public static Singleton Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested()
{
}
internal static readonly Singleton instance = new Singleton();
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何在C++中编写等效代码?我有这个,但我不确定它是否实际上具有与Jon相同的功能.(顺便说一下,这只是一个星期五的练习,不需要任何特别的东西).
class Nested;
class Singleton
{
public:
Singleton() {;}
static Singleton& Instance() { return Nested::instance(); }
class Nested
{
public:
Nested() {;}
static Singleton& instance() { …Run Code Online (Sandbox Code Playgroud) 现有的非托管C++项目使用在C#中声明和实现的COM组件,我的标题看起来有点像这样:
#import "MyComponents.tlb" no_namespace named_guids
IComponentXYZ *pComponent;
Run Code Online (Sandbox Code Playgroud)
有时当我右键单击.h文件中的"IComponentXYZ"和"转到声明"时,会显示一个"MyComponent.tlh"文件,显示COM包装器定义.但其他时候,它表示没有定义.
我可以在Visual Studio中手动打开此文件吗?我认为它是自动生成的.虽然对象浏览器窗口允许我检查TLB内容,但它不显示原始COM方法声明.
我正在尝试使用以下存储过程.
DELIMITER $$
CREATE DEFINER=`root`@`localhost`
PROCEDURE `DeleteField`( IN _TABLENAME Text, IN _FIELDNAME text)
BEGIN
if exists (select * from information_schema.Columns
where table_name = _TABLENAME and column_name = _FIELDNAME)
then
alter table _TABLENAME drop column _FIELDNAME;
end if;
END
Run Code Online (Sandbox Code Playgroud)
所以我做了Call('anytable','Anyfield')并得到错误错误代码:1146Table'Database._tablename'不存在这个_tablename应该是我的参数,而不是字符串.
在我自己挂起之前,我有点帮助,我非常热爱自己的生活.
在C中,人们可以写(无视任何目的的检查)
const int bytes = 10;
FILE* fp = fopen("file.bin","rb");
char* buffer = malloc(bytes);
int n = fread( buffer, sizeof(char), bytes, fp );
...
Run Code Online (Sandbox Code Playgroud)
和n将包含的实际字节数读其可以是小于10(字节).
你如何在C++中做同等的事情?
我有这个,但它似乎不是最理想的(感觉如此冗长和额外的I/O),有更好的方法吗?
const int bytes = 10;
ifstream char> pf("file.bin",ios::binary);
vector<char> v(bytes);
pf.read(&v[0],bytes);
if ( pf.fail() )
{
pf.clear();
pf.seekg(0,SEEK_END);
n = static_cast<int>(pf.tellg());
}
else
{
n = bytes;
}
...
Run Code Online (Sandbox Code Playgroud) 我有一个问题,我想在进行深度复制时克隆对象指针。就像我有 T* t1 并且我想以 *t1.x= *t2.x 的方式创建一个新的对象指针 T* t2。
编写一个复制构造函数,其工作方式如下:
T(const T* cpy)
{
m_var = (*cpy).m_var;
}
T* t1 = new T;
T* t2(t1);
Run Code Online (Sandbox Code Playgroud)
如果使用上述方法,我应该注意什么?
谢谢鲁奇
我们有一个应用程序,其中堆的某些部分作为汇编指令/用于测试目的执行 - 我们将程序下载到PLC,但允许用户通过在下载到PLC之前执行其代码来模拟运行其应用程序.在我们总是从存储指令的堆中执行这些程序之前,这个工作正常但我们现在已经转换为VS2012了,现在看来关闭DEP并不是那么容易.我想知道是否有可能关闭DEP而不管GetProcessDEPPolicy返回什么,或者是否有其他技术从堆执行汇编指令而不涉及DEP?
在将C++应用程序从32位转换为64位Linux时,我发现了一个有趣的错误.我们的FileStore类实现了向/从文件保存/恢复结构.除了在一个方法中,它总是在每个操作之前和之后调用fopen()和fclose().在32位平台上的这种(错误)方法中,它可以在没有错误的情况下fseek()和fread(),即使该文件之前已经通过其他方法fclose()了.在64位平台上,它每次都在fread()上崩溃.我想在32位平台上,即使在fclose()之后,基础FILE结构仍然存在,因此仍然可以访问它.有没有人有任何进一步的信息,为什么这个差异和任何其他陷阱64位文件i/o?
如果我要char *在字符串中访问数组,那么数组是否包含空格?
例.
String s = "1 3";
Run Code Online (Sandbox Code Playgroud)
会s[1]是" "或3?
谢谢!
在我的NSXMLParser完成并从内存中释放后,我得到了一个奇怪的泄漏.
它提出了NSMapTable alloc leak.这是我的堆栈:
0 libSystem.B.dylib calloc
1 libobjc.A.dylib _internal_class_createInstanceFromZone
2 libobjc.A.dylib class_createInstance
3 Foundation NSAllocateObject
4 Foundation +[NSMapTable alloc] <===== this is the leak...
5 Foundation -[NSXMLParser initWithData:]
6 Foundation -[NSXMLParser initWithContentsOfURL:]
7 idispatch -[RootViewController parseXML:] /Developer/iPhone Apps/iDispatch/Classes/RootViewController.m:562 <================== this is my code calling
8 Foundation -[NSThread main]
9 Foundation __NSThread__main__
10 libSystem.B.dylib _pthread_start
11 libSystem.B.dylib thread_start
Run Code Online (Sandbox Code Playgroud)
想法?
欣赏你可以流下的任何光!
这是代码:
[NSThread detachNewThreadSelector:@selector(parseXML:)
toTarget:self
withObject:requestStr];
Run Code Online (Sandbox Code Playgroud)
它在自己的线程上调用此方法:
- (void)parseXML:(NSString*)theURL {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSXMLParser *parser = [[NSXMLParser alloc] …Run Code Online (Sandbox Code Playgroud) 我在这段代码中遇到两个小问题,但我无法得到它们.我已经提到了编译器给出错误的位置.下面给出了两个:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define SIZE 100
int count;
void menu(void);
void input(int[]);
void print(int[]);
void insert(int[]);
void delete_element(int arr[]);
void search(int arr[]);
void main(void)
{
int arr[SIZE];
char choice;
while(1)
{
menu();
choice=getche();
switch (choice)
{
case'1':input(arr);break;
case'2':delete_element(arr);break;
case'3':insert(arr);break;
case'4':print(arr);break;
case'5':search(arr);break;
case'6':exit(0);//from stdlib.h
default:printf("Enter valid choice!");
}
getch();
}
void print(int arr[])
{ // says declaration syntax error here
int i;
for(i=0;i<count ;i++)
printf("element is %d",arr[i]);
}
void input(int arr[])
{
if(count<SIZE)
for(count=0; ;count++)
{
printf("Enter element %d:",i+1);
scanf("%d"&arr[i]); …Run Code Online (Sandbox Code Playgroud) 在C中,这是合法的,并将编译:
char names[5] = "Hello";
Run Code Online (Sandbox Code Playgroud)
但这个不是:
char names[5];
names = "Hello";
Run Code Online (Sandbox Code Playgroud)
如何将赋值放在字符数组"Hello"中?我可以不这样做strcpy吗?
我知道Windows 32位允许任何进程大约2千兆字节的内存地址空间.2千兆字节= 2147483648字节.我试图分配堆内存超过2147483648字节,我没有看到任何错误或异常,这个代码:
# include<iostream>
int main(){
void *x=malloc(2147489999);
free(x);
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
是什么原因?