我们有一个软件产品,可以根据客户的需求和更一般的路线图发展.
因为我们处于SCRUM项目环境中,所以非常重要的是,新功能会进入产品,然后我们面临以下选择:
不发布新功能不是一种选择,客户不希望等待长期里程碑计划来获得他们想要的功能,并且在客户端模块中移动功能并不总是不可思议 - 有时我们需要更改产品的核心......
鉴于这些限制,有没有人对良好做法有任何反馈?
我搜索了一下SO,并没有找到任何帮助我的问题/答案.问题是我的jQuery函数调用变得太大而无法维护.我想知道我是否应该重构更多,或者是否有更好的方法来完成所有这些调用.你会看到,当我进行一次调用时,作为函数参数的匿名函数最终会非常大,并使代码的可读性变得非常糟糕.理论上,我可以把所有这些都分解成自己的功能,但我不知道这是不是最好的做法.以下是目前为止jQuery的一些示例:
$('#dialog').html('A TON OF HTML TO BUILD A FORM').dialog('option', 'buttons', { 'Save': function(){$.post('/use/add/', $('#use_form').serialize(), function(data){ ......There were 4 more lines of this but I'm saving you so you don't rip your eyeballs out hopefully you get the idea.....dialog('option','title','New Use').dialog('open');
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,因为我正在调用的许多函数都将函数作为参数,当我创建匿名函数时,我最终得到了一个巨大的混乱(此代码中还有大约3个匿名函数声明)
我应该简单地制作一堆函数并调用它们以使其更具可读性.我反对这个的唯一原因是因为我声明了一堆只使用过一次的函数.
在此先感谢您的帮助!
想象一下,在C++中,有两个类被命名derived,另一个被命名base为第一个类的基类.如果我有以下代码,这是首选的:
base *b = init_value_here;
const derived *d = static_cast<derived *>(b);
Run Code Online (Sandbox Code Playgroud)
要么
base *b = init_value_here;
const derived *d = static_cast<const derived *>(b);
Run Code Online (Sandbox Code Playgroud)
换句话说,最好const在不需要时在静态强制转换中排除,因为编译器可以提升为常量,或者是否更好地包含它以放宽限制,b以便const将来更容易制作?
对项目进行维护我遇到了代码,我觉得这些代码很难读,我希望重构,以提高可读性.
功能是需要按顺序执行的长链操作.只有在上一个操作成功时才应处理下一个操作.如果操作不成功,则需要设置相应的消息.返回的类型是布尔值.(成功的真/假).就像所有被调用动作的返回类型一样.
基本上它归结为这样的事情.
string m = String.Empty; // This is the (error)Message.
bool x = true; // By default the result is succesful.
x = a1();
if(x) {
x = a2();
}
else {
m = "message of failure a1";
return x;
}
if(x) {
x = a3();
}
else {
m = "message of failure a2";
return x;
}
//etcetera..etcetera...
if(x){
m = "Success...";
}
else{
m = "Failure...";
}
return x;
Run Code Online (Sandbox Code Playgroud)
我的问题是:处理这种逻辑的更好的结构/模式是什么?
主要目标是:
c# algorithm maintainability design-patterns code-readability
您有一系列要执行的函数.案例A:他们不依赖于彼此.哪个更好?
function main() {
a();
b();
c();
}
Run Code Online (Sandbox Code Playgroud)
要么
function main() {
a();
}
function a() {
...
b();
}
function b() {
...
c();
}
Run Code Online (Sandbox Code Playgroud)
案例B:他们确实依赖于之前的成功完成.
function main() {
if (a())
if (b())
c();
}
Run Code Online (Sandbox Code Playgroud)
要么
function main() {
if (!a()) return false;
if (!b()) return false;
c();
}
Run Code Online (Sandbox Code Playgroud)
要么
function main() {
a();
}
function a() {
... // maybe return false
b();
}
function b() {
... // maybe return false
c();
}
Run Code Online (Sandbox Code Playgroud)
当然,更好的意思是更易于维护和更容易理解.
也许一个简单的问题,一个简单的答案.
今天我想知道当孩子的宽度与父母的宽度完全相同时,px或100%的子宽度之间有什么区别.结果将与我所知的相同,但最好使用什么?
例;
div {width: 300px;}
h1 {width: 300px;} /*or..*/
h1 {width: 100%;}
<div>
<h1>Width of child</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
有关系吗?你用哪个?
myThread是一个每秒执行一次的函数,基本上它会读取一些必须被解析和执行的数据.函数增长了很多,超过1500行代码,如下面的示例,有很多[if else if else]阻止大量重复,如sleep或SendToChat向控制台发送命令,并且很难维护对它做出改变等.
我想要一些建议(如果可能,有代码示例,这将有助于我理解布局)我如何重写它,我不是很有经验,所以我不太确定将这些代码变成更好的代码的可能性可维护性和可读性?
也可以随意评论任何功能或其他任何功能,因为它可以帮助我改进其他错误的东西.
这只是代码的一些示例,而不是整个代码,如果您觉得您需要代码中的任何其他信息,请随时提出,我会尽可能地发布.
PS:这不是一件事.
private void myThread()
{
while(isRunning)
{
// SOME PARSED DATA HERE
// if (parsedData matchs) do the below stuff
Messages received = new Messages
{
Sent = Convert.ToDateTime(match.Groups[1].Value),
Username = match.Groups[3].Value,
MessageType = (match.Groups[2].Length > 0) ? MsgType.System : MsgType.Chat,
Message = match.Groups[4].Value.Trim(),
CommandArgs = match.Groups[4].Value.ToLower().Trim().Split(' ')
};
// Get the user that issued the command
User user = usersList.Find(x => x.Name == recebe.received.ToLower());
if (user != null)
{
// different greetings …Run Code Online (Sandbox Code Playgroud) 什么会更高性能和更好的资源?
使用
$array1=Array();
$array2=Array();
$array3=Array();
Run Code Online (Sandbox Code Playgroud)
要么:
$arr=Array();
$arr[] = Array();
$arr[] = Array();
$arr[] = Array();
Run Code Online (Sandbox Code Playgroud)
在需要维护时,在代码中处理什么更好?
我必须处理大约2800个不同的阵列,因此性能非常重要.
我们的产品开发团队一直在讨论 html 的可维护性和重用性。为了设置上下文,我们从 HTML5/CSS3 前端和 Play MVC 下的纯 JS 开始,而后者又使用 RESTful 后端。然后我们想到将 AngularJS 添加到旋转中并采用混合方法,结果却意识到两个强大的 MVC 框架不一定能一起工作,您必须选择一个。因此,出于性能和类型安全等问题,我们决定使用 Play 框架和基于 Scala 的模板。
挑战在于:我们希望创建可重用的 Web 组件,就像 Apache Tiles 一样,以便可以重用常见的元素,例如页眉、菜单、页脚等。这些组件已准备好进入 Play,可以向其中添加动态内容以提供整个页面。
这能做到吗?如果是,如何?
其次,播放模板似乎让您回到过去,因为它们不允许在 html 中分离关注点。因此,为了重新设计或改进 html 内容,html 开发人员将不得不处理模板或将新 html 与现有模板合并。如何使这个过程更容易?
在大多数情况下,传统的编程智慧似乎不鼓励使用静态方法.通常,我有这些'经理',例如UserManager,AppointmentManager等,经理中的一个方法就是XXX getXXX(long xxxId)例如User getUser(long userId).我真的不明白为什么这不能成为静态方法.它看起来非常像工厂方法(la GoF工厂模式).很难放弃以下方便:
User user = UserManager.getUser(id);
并使用
UserManager userManager = new UserManager();
User user = userManager.getUser(userId);
代替.
PS我相信测试; 我不是一个'模拟测试'的粉丝,所以除了嘲笑我还需要理由.
maintainability ×10
c# ×2
readability ×2
.net-3.5 ×1
algorithm ×1
arrays ×1
branch ×1
c++ ×1
const ×1
css ×1
java ×1
jquery ×1
performance ×1
php ×1
refactoring ×1
release ×1
reusability ×1
scala ×1
scrum ×1
svn ×1
tiles ×1
winforms ×1