标签: program-flow

PHP"或"语法

我已经看过很多了:$fp = fopen($filepath, "w") or die(); 但我似乎无法找到关于这种"或"语法的任何真实文档.它的功能显而易见,但我可以在任何地方使用它吗?它一定要跟着die()吗?or当你可以使用类似的东西时,是否有任何需要注意的事项

if (file_exists($filepath))
   $fp = fopen($filepath,"r");
else
   myErrMessage();
Run Code Online (Sandbox Code Playgroud)

我知道这似乎是一个愚蠢的问题,但我找不到任何严格的规则.谢谢.

php syntax control-structure program-flow or-operator

35
推荐指数
4
解决办法
4万
查看次数

编程风格:如果不满足保护条件,您应该提早返回吗?

我有时想知道的一件事是下面显示的两个中哪个更好(如果有的话)?它是更好立即返回,如果监护条件尚未满足,或者如果保护条件,你应该只能做其他的东西满意吗?

为了参数,请假设保护条件是一个返回布尔值的简单测试,例如检查元素是否在集合中,而不是通过抛出异常可能影响控制流的东西.还假设方法/函数足够短,不需要编辑器滚动.

// Style 1
public SomeType aMethod() {
  SomeType result = null;

  if (!guardCondition()) {
    return result;
  }

  doStuffToResult(result);
  doMoreStuffToResult(result);

  return result;
}

// Style 2
public SomeType aMethod() {
  SomeType result = null;

  if (guardCondition()) {
    doStuffToResult(result);
    doMoreStuffToResult(result);
  }

  return result;
}
Run Code Online (Sandbox Code Playgroud)

language-agnostic program-flow control-flow

30
推荐指数
6
解决办法
7877
查看次数

在Java中访问内部类的包含类

这就是我现在正在做的事情.有没有更好的方式来访问超类?

public class SearchWidget {
    private void addWishlistButton() {
        final SearchWidget thisWidget = this;
        button.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                // A better way to access the super class?
                // something like "this.super" ...?
                workWithWidget(thisWidget);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Google Web Toolkit进行编程,但我认为这确实是一个通用的Java问题.

java this program-flow

17
推荐指数
2
解决办法
5392
查看次数

javascript事件处理是在程序流程内部还是外部发生的?

这个问题与Javascript事件处理和流量控制有关,但它只是一步之遥.仍然没有答案的问题是:当一个事件被触发并且控制权返回给浏览器时,浏览器是否可以决定首先处理其他事件(由其他脚本或用户操作触发)(A),或者它总是直接处理我的事件(B)?

javascript事件处理是在程序流程之外(A)还是在(B)之外发生的? 这个问题很重要,因为在情况(B)中你可以依赖于在触发事件和事件处理程序之间没有任何改变的事实,而(A)不给出任何保证.

我的第一个猜测是(B),还有什么可以stopPropagation()和preventDefault()工作?但是给它第二个想法,这并不是确凿的证据.

这个问题的现实例子.我正在修改一个富文本编辑器(hallo),我希望它有这些规范:

  • 单击可编辑文本(#txt)将激活编辑器,单击#txt外部将停用它.hallo在#txt上使用模糊和焦点事件来实现这一目标.
  • 激活编辑器会打开一个工具栏,工具栏上的moused(但不在按钮上)会设置一个标志,以防止#txt上的模糊事件停用编辑器.工具栏将焦点返回到#text.
  • 工具栏按钮上的mousedown也应该阻止停用编辑器,但它应该等到click事件,执行其操作然后将焦点返回到#txt.某些操作是立即的(粗体或斜体),而其他操作则需要额外的用户输入(从下拉列表中选择).
  • 其中一些按钮打开一个对话框.
  • ...我希望所有这些元素(编辑器,工具栏,对话框)都是模块化的,并且可以轻松扩展.

现在,在大多数情况下,当您关闭对话框时,您希望焦点返回到#txt.但是如果打开对话框并单击页面上的其他位置,编辑器将关闭并调用工具栏,包括要关闭的对话框.如果在这种情况下对话框将焦点返回到编辑器,它将再次激活编辑器.

据我所知,事件处理顺序至少是确定性的.某些事件可能会延迟,而其他事件则会提前处理.这就是'同步'的含义.例外情况当然是加载文件等事件.

从程序组件的角度来看,比如对话框,情况可能非常难以预测.它可以将处理程序绑定到open事件,然后调用dialog("open"),但是在调用和处理程序之间可能发生任何事情,只是因为编辑器在同一事件上有一个事件处理程序.

所以我的结论是1)是的,它是可预测的,但2)它需要一个复杂的架构来实现这一点.

javascript event-handling program-flow

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

GUI和游戏程序流程与Web程序相比如何?

我已经开发了一段时间的Web应用程序,并且已经完成了GUI和游戏应用程序开发.

在Web应用程序(php for me)中,对文件发出请求,该文件包含将信息处理到内存中的所有必要文件,然后每个请求的流程从上到下.(主要是)

我知道对于游戏来说,动作是在游戏循环中发生的,但是游戏的所有不同元素如何分成单个循环(菜单系统,gui,加载资源和3d世界)以及某些常量的加载和卸载的东西.

对于GUI程序来说,我相信有一些"应用程序循环".

大多数项目被调用到内存中然后被访问,是否需要时链接并加载到内存中的项目?

帮助我更快地开发Web应用程序的是当我理解程序的流程时,它不必详细,只需要一般的想法或伪代码.

user-interface program-flow

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

我们需要为每个子例程创建一个错误处理程序吗?

我从SO复制一段代码作为例子.子例程包含错误处理程序.是否应该为所有Subs制作错误处理程序?

Public Sub SubA()
  On Error Goto ProcError

  Connection.Open
  Open File for Writing
  SomePreciousResource.GrabIt

ProcExit:  
  Connection.Close
  Connection = Nothing
  Close File
  SomePreciousResource.Release

  Exit Sub

ProcError:  
  MsgBox Err.Description  
  Resume ProcExit
End Sub
Run Code Online (Sandbox Code Playgroud)

顺便说一下,如何做一个子程序内部的控制流时,代码执行遇到Exit Sub,End SubResume?当它遇到诸如ProcError:执行期间的标签时,它是执行它还是跳过它?

error-handling vba program-flow

5
推荐指数
2
解决办法
1万
查看次数

应该使用`if($ a!= NULL)`或`if($ a!== NULL)`来控制程序流吗?

这也许是一个痛苦的基本回答的问题,但我想了解一下使用PHP的关于性能问题如果相同的 !==对比,如果等于 !=控制流.

考虑以下简单的PHP函数:

<?php
 function test_json($json = NULL) {
  if ($json != NULL) {
   echo 'You passed some JSON.';
  } else {
   echo 'You failed to pass any JSON.';
  }
 }
?>
Run Code Online (Sandbox Code Playgroud)

从性能的角度来看,最好是使用if(!==)来阻止PHP迭代变量类型,试图找到有效的比较吗?

认为!== 第一个对变量的类型,如果失败,它会立即返回FALSE?我!=从PHP3开始几乎用作反射.既然我正在开展一些计算密集型项目,那么微小的性能考虑将成为一个问题.

当然,欢迎对流量控制优化提出其他意见!

php performance if-statement program-flow micro-optimization

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

在C#中抛出异常后的程序流程

嗨,我正在查看一些旧的c#代码并注意到很多这样的代码:

void SomeFunction()
{
    if (key.Length != Dimensions)
    {
        throw new KeySizeException();
    }
    else
    {
        SomeOtherFunction();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个甚至需要else块的情况?我可以安全地将代码缩短到此而没有任何影响吗?

void SomeFunction()
{
    if (key.Length != Dimensions)
    {
        throw new KeySizeException();
    }

    SomeOtherFunction();
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,异常应该抛出这个方法的程序流吗?但我只是想知道在DotNet中是否有办法调整未处理的异常是如何处理的,这会导致第二个实现与第一个实现不同?

c# exception-handling program-flow

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

如何突破Ruby中的开始块?

如何突破开始区块并跳转到救援区?

def function
  begin
    @document = Document.find_by(:token => params[:id])
    next if @document.sent_at < 3.days.ago # how can I skip to the rescue block here?
    @document.mark_as_viewed
  rescue
    flash[:error] = "Document has expired."
    redirect_to root_path
  end
end
Run Code Online (Sandbox Code Playgroud)

我尝试使用next不起作用.

ruby program-flow

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

java中的try-catch-finally块

根据我的理解,我希望遵循最终释放资源的最佳实践,以防止任何连接泄漏.这是我在HelperClass中的代码.

public static DynamoDB getDynamoDBConnection()
{   
    try
    {
        dynamoDB = new DynamoDB(new AmazonDynamoDBClient(new ProfileCredentialsProvider()));
    }
    catch(AmazonServiceException ase)
    {
        //ase.printStackTrace();
        slf4jLogger.error(ase.getMessage());
        slf4jLogger.error(ase.getStackTrace());
        slf4jLogger.error(ase);
    }
    catch (Exception e)
    {
        slf4jLogger.error(e);
        slf4jLogger.error(e.getStackTrace());
        slf4jLogger.error(e.getMessage());
    }
    finally
    {
        dynamoDB.shutdown();
    }
    return dynamoDB;
}
Run Code Online (Sandbox Code Playgroud)

我的疑问是,既然finally块将被执行,无论如何,dynamoDB将返回空连接,因为它将在finally块中关闭然后执行return语句?TIA.

java program-flow try-catch-finally amazon-dynamodb

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