用于实现JQuery命名空间以托管通用实用程序功能的当前"经验法则"是什么?
我有许多分散在各种文件中的JavaScript实用程序方法,我想将它们整合到一个(或多个)命名空间中.最好的方法是什么?
我目前正在查看两种不同的语法,按优先顺序列出:
//******************************
// JQuery Namespace syntax #1
//******************************
if (typeof(MyNamespace) === "undefined")
{
MyNamespace = {};
}
MyNamespace.SayHello = function ()
{
alert("Hello from MyNamespace!");
}
MyNamespace.AddEmUp = function (a, b)
{
return a + b;
}
//******************************
// JQuery Namespace syntax #2
//******************************
if (typeof (MyNamespace2) === "undefined")
{
MyNamespace2 =
{
SayHello: function ()
{
alert("Hello from MyNamespace2!");
},
AddEmUp: function (a, b)
{
return a + b;
}
};
}
Run Code Online (Sandbox Code Playgroud)
语法#1更加冗长,但似乎更容易维持下去.我不需要在方法之间添加逗号,我可以保持对齐所有函数. …
我意识到这个问题已被多次询问,但我仍然无法完全理解这个概念.在我的应用程序中,我使用静态实用程序类来保留常用方法(如显示错误对话框)
这是我的静态类的样子:
public class GlobalMethods {
//To show error messages
public static final void showSimpleAlertDialog(final Activity activity, String message, final boolean shouldFinishActivity) {
if (!activity.isFinishing()) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity, AlertDialog.THEME_HOLO_DARK);
builder.setCancelable(true).setMessage("\n" + message + "\n").setNeutralButton(activity.getResources().getString(R.string.label_ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
}).setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
if (shouldFinishActivity)
activity.finish();
}
}).show();
}
}
//check for connectivity
public …Run Code Online (Sandbox Code Playgroud) android memory-leaks pass-by-reference android-context utility-method
我在单元测试包装器方法中捕获所有throwable,以便重置外部系统中的一些数据.我想在完成后重新抛出原始异常并且我正在使用这段代码来执行此操作:
if (t instanceof RuntimeException) {
throw (RuntimeException) t;
} else if (t instanceof Error) {
throw (Error) t;
} else {
throw new RuntimeException(t);
}
Run Code Online (Sandbox Code Playgroud)
但是,是否有任何现有的实用程序调用已经执行此操作?
(我正在捕捉throwables因为AssertionErrors是错误.)
编辑:说实话,我真的不想包装异常,所以任何允许我抛出任何throwable(包括检查异常)而不声明抛出的技巧都是可以接受的.
我有一些关于在javascript中创建单例的方法的阅读 - 简单的对象文字方式和另一种带有闭包技术的方法,如果我们想要使用私有变量.
我正在寻找创建一个实用功能,例如
Singleton(classname);
无论什么类 - "构造函数"我在这里作为参数传递,Singleton方法将此类转换为Singleton对象,PLUS在调用new Classname()if 之后再次触发新的classname()他/她得到一些new Error ( "Already instantiated once, this is Singleton" );
使用案例如下 -
function Circle() {this.name = "Circle";}
SingleTon(Circle);
var circle1 = new Circle(); // returns the circle instance
var circle2 = new Circle(); // throws Error "Already instantiated once, this is Singleton"
Run Code Online (Sandbox Code Playgroud)
我只想在这里定义"Singleton"方法.
我已经看到类似的例子,其中getInstance方法用于获取实例,如Singleton.getInstance(Circle)等,但我正在寻找上面的特定问题,其他程序员习惯以"新"方式创建实例new Circle(); 在他的代码中某处第二次触发并收到错误.
以这种方式创建单例是一个问题,但主要问题是抛出"错误",据我所知,Circle构造函数需要在Singleton函数中的某处修改,不知道如何实现这一点.
有什么解决方案吗?
提前致谢 !!
我想要做的是将文件(使用Apache poi的excel文件)中的键/值对加载到将用作查找表的静态映射中.一旦加载,表格就不会改变.
public final class LookupTable
{
private final static Map<String, String> map;
static {
map = new HashMap<String, String>();
// should do initialization here
// InputStream is = new FileInputStream(new File("pathToFile"));
// not sure how to pass pathToFile without hardcoding it?
}
private LookupTable() {
}
public static void loadTable(InputStream is) {
// read table from file
// load it into map
map.put("regex", "value");
}
public static String getValue(String key) {
return map.get(key);
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想在静态初始化块中加载映射,但是如何在不对其进行硬编码的情况下传递流?我在使用loadTable静态方法时看到的问题是在调用其他静态方法之前可能没有调用它.
// LookupTable.loadTable(stream);
LookupTable.getValue("regex"); …Run Code Online (Sandbox Code Playgroud) 是否有来自Apache Commons的toString实用程序,它只会在结果的toString值中包含那些非null的字段?
例如:
public class Person {
String name;
String height;
String age;
}
Run Code Online (Sandbox Code Playgroud)
并创建一个具有名称和年龄的实例.然后调用该实用程序,例如:
utility.toStringNonNull(person);
Run Code Online (Sandbox Code Playgroud)
将输出:
[姓名=玛丽,年龄= 28]
我需要从文件名中提取扩展名.
我知道这可以用于单个扩展,例如,.gz或者.tar通过使用filePath.lastIndexOf('.')或使用FilenameUtils.getExtension(filePath)来自Apache commons-io的实用程序方法.
但是,如果我有一个扩展名的文件.tar.gz怎么办?如何管理包含.字符的扩展名的文件?
我正在创建一个应用程序,我想在其中检测到iphone是否处于静音模式.
我已经想到了下面的链接
使用AVAudioPlayer检测iPhone的响铃/静音/静音开关不起作用?
很多人说这是违反iPhone政策的.但我看到很多应用程序也提供此功能
检查以下应用链接
https://itunes.apple.com/us/app/silentalert/id506092189?mt=8
我也想改变iPhone的静音模式,就像上面的应用程序一样.
有人知道吗?
public static <T> List<T> repeat(T contents, int length) {
List<T> list = new ArrayList<T>();
for (int i = 0; i < length; i++) {
list.add(contents);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
这是我们的专有公共库中的实用方法.它对于创建列表很有用.例如,我可能想要一个包含68个问号的列表来生成大型SQL查询.这使您可以在一行代码中执行此操作,而不是四行代码.
在java/apache-commons中是否有一个实用程序类已经这样做了?我浏览了ListUtils,CollectionUtils,Arrays,Collections,几乎我能想到的一切,但我无法在任何地方找到它.我不喜欢在我的代码中保留通用实用程序方法,如果可能的话,因为它们通常是apache库的冗余.
我想生成一个不存在的文件系统/文件夹结构的漂亮文本呈现。想象一下,我想提出一个文件系统布局,我想以一种可以快速打字的简单方式来表达这一点。例如,给定如下输入:
\nanother\n folder\n log.txt\nfinal\nhi.py\nsome\n folder\n file.txt\nRun Code Online (Sandbox Code Playgroud)\n其中层次结构简单地由选项卡表示。但也可以是任何其他编码。
\n我想得到一个漂亮的输出,比如tree可以生成:
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 another\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 folder\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 log.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 final\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hi.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 some\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 folder\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file.txt\nRun Code Online (Sandbox Code Playgroud)\n这里的目标是避免输入不可输入但漂亮的字符,例如\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80或\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80。理想情况下,该工具的网络版本将是可取的。
有一堆看似相关的 SO 帖子:What tool to use to绘制文件树图或Representing Directory & File Structure in Markdown Syntax。但是,它们都需要现有的文件夹结构。
\n是否有类似以下的内容Apache Common Lang或者Spring Utils您是否为此编写了自己的Util方法?
List<String> list = new ArrayList<String>();
list.add("moo");
list.add("foo");
list.add("bar");
String enumeratedList = Util.enumerate(list, ", ");
assert enumeratedList == "moo, foo, bar";
Run Code Online (Sandbox Code Playgroud)
我记得implode在php中使用,这就是我搜索java的内容.
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么要使用getter和setter?
我知道这非常微不足道.但是为什么我们定义私有,然后我们使用getter和setter.这更像是为了防止程序员在使用私有变量或方法时出错吗?或者是出于安全考虑.如果出于安全考虑,那么拥有吸气剂或制定者有什么意义呢?我知道我们可以在getter和setter中有限制但是那些if子句主要是为了防止错误而不是隐私限制.例如,我们通常不会说这些成员使用if子句限制对此方法的访问.
谢谢.
好的,所以努力学习一些C#.伟大的语言,喜欢与它一起工作,但我不理解如何克服缺乏实用程序类.本质上,我想设置一个通用实用程序类,它可以包含在一个文件夹中,只需通过"使用命名空间Globals/Utilities/etc"就可以用于任何项目.命令.在本质上:
using System;
namespace Globals {
public static class Commands {
public static void WaitForReturn() {
Console.WriteLine("Press Enter to continue.");
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
与上面类似,在任何其他类中,我可以通过将其包含为预处理指令来调用函数.
using System;
using Globals;
namespace RectangleDemo {
<rectangle definition here>
class Demo {
static void Main(string[] args) {
Rectangle r = new Rectangle();
Rectangle s = new Rectangle(5, 6);
r.Display();
s.Display();
WaitForReturn();
}
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,我正在尝试简单地编译我的"实用程序"类(超过上面列出的内容)来检查错误,但它只是告诉我它无法编译它,因为没有主要方法.有什么建议?
(是的,我知道我有一个java编码风格,我没关系!)
utility-method ×13
java ×7
singleton ×2
android ×1
c# ×1
exception ×1
file ×1
file-io ×1
filesystems ×1
iphone ×1
javascript ×1
jquery ×1
memory-leaks ×1
namespaces ×1
objective-c ×1
oop ×1
silent ×1
tostring ×1
tree ×1
utility ×1