我有这个Perl代码:
@str = qw(a1 a2 a3);
my @array;
$s1 = 'a1';
$s2 = 'a2';
$s3 = 'a3';
Run Code Online (Sandbox Code Playgroud)
现在给出的s1,s2,s3得到引用$array[0],$array[1],$array[2]分别.开关盒是可能的.但如何在一两个陈述中得到它.
我现在正在使用PHP类和对象.在这个问题中,字段和方法的名称只是为了让你了解我在说什么.
它与使用单例和注册表设计模式有关.
现在假设我需要访问数据库对象,缓存对象,核心设置对象,几乎所有其他类中的Session对象,我需要访问这些对象.所以我会使用注册表将所有这4个对象存储到1个注册表类对象中.然后我可以将easiyl传递给我的1个对象到需要访问这些对象的任何其他对象.所以这听起来很棒,但是如果我有一些不需要所有4个对象的类,那么如果我只需要在我的其他一些类中访问Database对象或Session对象呢?对于性能,最好只在这些其他对象中使用单例,还是继续使用我的注册表?
我不太清楚PHP中的对象如何工作以了解是否会有任何类型的性能增益(更少的内存使用,CPU使用,加载时间).
因此,任何有这方面经验的人都可以告诉我,如果使用其中一个获得任何收益,我现在处于以太流行的阶段,而不影响生产时间或任何事情.如果我能够,我想用最好的方法.
我知道已经有关于VB6迁移的问题,但是我的项目的代码库带来了一些新的问题.
我不得不说代码质量,结构和架构只是一场噩梦.有两个大项目:Nr.1有40个表格,40个模块和一些类文件,这个EXE是一种"基础系统".Nr.2有80个表格,20个模块和几个类文件,这个EXE调用函数形成"基本系统".然后还有大约10个带GUI的项目(每个1-3个表单)和另外90个非GUI项目,其中大多数是EXE文件,一些是DLL.DLL用C,C++和VB6编写.
该守则自10年以来逐渐发展,并且一次由1个(坏)开发人员编写.
几个月前我接手了这个项目,我是唯一的维护者.变更请求和错误的流量不断(但很低),我们从客户处获得维护预算,以保持软件运行并在法律要求方面"更新".
我的选择
1)从头开始重写 - 在这种情况下,我可以用Java编写它以实现可移植性.这里的问题是,除了一些(旧)用户帮助,没有文档,所以丑陋的代码是"文档".有一个人具有高级别知道该软件应该如何做.此外,很难说服管理层这样做,即使长期存在巨大的成本节约,也存在政治问题.我也不能一次做那个(vb)项目,因为数据库结构并不比代码好,即必须从头开始.所以我只能一次更改整个软件.
2)将代码迁移到VB.NET/C#主要项目的迁移首先,我测试了已经从Project Nr.1获得~2000升级注释,其中大部分内容如Screen.MousePointer更改,函数具有变量返回值和等等.我的想法是在转换之后,创建用于数据库抽象的类,更改代码以使用这些类,并进行重构,迁移和更改其他项目,当所有代码使用数据库类时,更改数据库结构.
3)每当我必须在那里改变一些东西时重构VB6中的代码(我已经部分地做了这个)并且在某些时候重构了其余部分.这样就可以更容易地看到原始功能,因为它是原始代码,当出现错误时,很明显它们不能成为迁移的结果.当代码被重构时(我假设它也会小50-75%),将它迁移到.NET更容易.然后改变DB结构(然后进行另一轮重构......).
将来会有一些更大的变化(使它与Win7兼容,以及影响代码大部分的另一个大CR),因此我将不得不通过这些变更进行这些更改.无论如何,很多代码.
我的问题是谁有移植糟糕,丑陋代码的经验/提示?你会建议哪些选择?
我正在使用Eclipse 3.5.1(Galileo),并且在使用其中一个自动格式设置时遇到问题.
在我自动格式化空白行的那一刻,在每个字段声明之间插入.我正在寻找的行为是组织字段声明,之间没有空行.除了在声明之间已经存在一个或多个空行的情况之外,在这种情况下,我希望格式化程序遵守空格,并将> = 1行减少到1行.
我知道这在Eclipse的某些时候是可能的(不记得版本,但我已经使用了一个设置),但我似乎找不到正确的设置Window->Preferences->Java->Code Style->Formatter.
我配置哪个设置来启用此行为?
编辑:似乎我所描述的行为是默认的,由于某种原因,我找不到一种方法来返回到没有删除.settings目录.它也无法复制,这表明它与项目设置有些奇怪(它是从开源项目中检出的).虽然我找到了解决这个问题的黑客方法,但我仍然在寻找建议,并且能够验证并接受答案.
与此Stack Overflow问题(C状态机设计)相关,Stack Overflow人员可以与我(以及社区)共享您的Python状态机设计技术吗?
目前,我正在寻找基于以下内容的引擎:
class TrackInfoHandler(object):
def __init__(self):
self._state="begin"
self._acc=""
## ================================== Event callbacks
def startElement(self, name, attrs):
self._dispatch(("startElement", name, attrs))
def characters(self, ch):
self._acc+=ch
def endElement(self, name):
self._dispatch(("endElement", self._acc))
self._acc=""
## ===================================
def _missingState(self, _event):
raise HandlerException("missing state(%s)" % self._state)
def _dispatch(self, event):
methodName="st_"+self._state
getattr(self, methodName, self._missingState)(event)
## =================================== State related callbacks
Run Code Online (Sandbox Code Playgroud)
但我确信在利用Python的动态特性(例如动态调度)的同时,还有很多方法可以实现.
我正在接受"引擎"的设计技术,它接收基于机器"状态"的"事件"和"发送".
我正在使用raw_input()以交互模式从用户接收密码,但出于安全原因,我想使输入符号不可见,就像您使用sudo键入密码或连接到数据库时一样.我应该怎么做?
我有一个内联formset,我想排除一些模型对象在formset中显示.
例如.模型B具有模型A的外键,因此它是1:n(一个对象有很多B对象)的关系.现在在一个管理编辑页面上,我有了B的内联.我想知道是否有可能以某种方式在呈现内联formset之前过滤B对象列表,因此并非所有与B对象相关的A都会进入formset.
我正在寻找一些关于在典型的中型软件开发团队中需要的不同技能组合比例的参考或最佳实践.
假设有40名开发人员,SQA,UI设计师,项目经理,数据专家等应该占多大比例?
问题领域是通用工程.我意识到这似乎是一个模糊的问题,但正确的答案将提供行业标准和最佳实践的参考,而不是一堆数字.
意见和智慧的话也赞赏!问候.
我有一个关于R的超短问题
我的目标是为使用par生成的多面板图指定一个共同的标题,例如
par(mfrow=c(1,2))
plot(rnorm(1000))
plot(rnorm(1000))
Run Code Online (Sandbox Code Playgroud)
因此,类似于绘图功能的"主要",但扩展到两个图.有没有规范的方法来做到这一点?
谢谢你的回答:-)
http://www.cplusplus.com/reference/algorithm/for_each/
一元函数将范围内的元素作为参数.这可以是指向函数的指针,也可以是类重载operator()的对象.其返回值(如果有)将被忽略.
根据这篇文章,我预计for_each实际上会修改作为第三个参数给出的对象,但似乎for_each对临时对象进行操作,甚至不会修改赋予它的对象.
那么,为什么以这种方式实施呢?它似乎没那么有用.或者我误解了什么,下面的代码包含错误?
#include <iostream>
#include <vector>
#include <algorithm>
template <class T> struct Multiplicator{
T mresult;
public:
const T& result() const{return mresult;}
Multiplicator(T init_result = 1){
mresult = init_result;
}
void operator()(T element){
mresult *= element;
std::cout << element << " "; // debug print
}
};
int main()
{
std::vector<double> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
Multiplicator<double> multiply;
std::for_each(vec.begin(),vec.end(),multiply);
std::cout << "\nResult: " << multiply.result() << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
1 2 3 Result: 6
Run Code Online (Sandbox Code Playgroud)
但得到以下输出:
1 2 3 …Run Code Online (Sandbox Code Playgroud)