我经常读到可读性和可维护性的重要性.或者,我阅读了关于哪些语法功能不好或好的非常强烈的意见.或者讨论某些范式的价值观,比如OOP.
除此之外,每当我读到有关主观问题的关于SO或Meta的辩论时,同样的问题在我脑海中浮现.或者阅读有关最佳实践的问题,有时会发现自己或其他人不同意.
主观性在编程领域中扮演什么角色?
有时候我认为它起着很大的作用.软件开发人员在某种程度上是工程师,也是人.编程的很大一部分是处理人类可读的代码.这与数学或物理学或其他具有非常精确和结构化规则的学科非常不同.在这里,确切的结构和规则大部分都在空中,随心所欲地变化,因此存在的语言数量.一个人可能会发现一种语言非常易读,而另一个人可能会发现他们自己的语言最令人欣慰.
与实践相同.一个人可能不喜欢某些公认的做法.我自己发现将类分成不同的文件是非常难以理解的.
但是,我不能说规则一般没有帮助.某些做法已经并确实使生活更轻松.新语言产生了语法和结构,使生活更轻松.即使给了一大批不同的人群,代码也很容易阅读和维护.所以也许这些事情并不像我想象的那么主观.
在某种程度上,它让我想起了UI设计.当然这是主观的,但是有一个完整的学科参与制作良好的用户界面,它往往有效.
对于可维护性,可读性和其他最佳实践背后的想法,是否存在一些非主观的内容?当一个人开发新语言或想到新的实践时,有什么东西可以掌握吗?
看一下关于套接字编程的例子,我们可以看到有些人在使用AF_INET其他人时使用PF_INET.另外,有时它们都用在同一个例子中.问题是:它们之间有什么区别吗?我们应该使用哪一个?
如果你能回答这个问题,另一个问题就是......为什么有这两个相似(但相等)的常数?
socket手册页在(Unix)套接字编程中,我们有socket()接收以下参数的函数:
int socket(int domain, int type, int protocol);
Run Code Online (Sandbox Code Playgroud)
该联机帮助页说:
所述
domain参数指定的通信区域; 这将选择将用于通信的协议族.这些系列在<sys/socket.h>中定义.
并且该手册页引用了该参数AF_INET以及其他一些AF_常量domain.此外,在NOTES同一手册页的部分,我们可以阅读:
4.x BSD下用于协议族的清单常量是PF_UNIX,PF_INET等,而AF_UNIX等用于地址族.但是,BSD手册页已经承诺:"协议族通常与地址族相同",后续标准在任何地方都使用AF_*.
在sys/socket.h实际没有定义这些常量,而是包括bits/socket.h.这个文件定义了大约38个AF_常量和38个PF_常量,如下所示:
#define PF_INET 2 /* IP protocol family. */
#define AF_INET PF_INET
Run Code Online (Sandbox Code Playgroud)
在Python的插座模块是非常相似的C API.但是,有许多AF_常量但只有一个PF_常量(PF_PACKET).因此,在Python中我们别无选择,只能使用AF_INET.
我认为这个仅包括AF_常数的决定遵循一个指导原则:"应该有一个 - 最好只有一个 - 明显的方法来做到这一点." (Python的禅宗)
我在哪里可以找到像log4net.Appender.FileAppender配置这样的XML DTD或Schema引用?
我在页面上有一个jqGrid,用户可以单击按钮添加新行.如果页面上已有足够的行来填充网格的可见部分,则会添加新行并显示滚动条,但用户需要滚动才能看到新行.
有没有办法以编程方式执行此操作?
我正在 Symfony 1.4(Doctrine 1.2)中使用 CMS 类型的站点,让我感到沮丧的一件事是无法在 YML 固定装置中存储 HTML 页面。相反,如果我想删除和重建数据,我必须创建数据的 SQL 备份,当 Symfony/Doctrine 有一个很好的机制来做到这一点时,这有点麻烦。
我可以编写一种机制,为每个页面读入一组 HTML 文件并以这种方式填充数据(甚至将其编写为任务)。但在我走这条路之前,我想知道是否有任何方法可以将 HTML 存储在 YML 固定装置中,以便 Doctrine 可以简单地将其导入数据库。
更新:
我曾尝试使用symfony doctrine:data-dump,symfony doctrine:data-load但是尽管转储正确创建了带有 HTML 的夹具,加载任务似乎“跳过”带有 HTML 的列的值,并将其他所有内容输入到行中。在数据库中,该字段不会显示为“NULL”,而是显示为空,因此我相信 Doctrine 会将列的值添加为“”。
下面是symfony doctrine:data-dump创建的 YML 夹具的示例。我尝试过symfony doctrine:data-load针对各种形式的这种情况运行,包括删除所有转义字符(新行和引号只留下尖括号),但它仍然不起作用。
Product_69:
name: 'My Product'
Developer: Developer_30
tagline: 'Text that briefly describes the product'
version: '2008'
first_published: ''
price_code: A79
summary: ''
box_image: ''
description: "<div id=\"featureSlider\">\n <ul class=\"slider\">\n <li class=\"sliderItem\" title=\"Summary\">\n <div class=\"feature\">\n Some …Run Code Online (Sandbox Code Playgroud) 我曾经在JavaScript中工作很多,而且真正困扰我的雇主的一件事是源代码太容易被盗了.即使有混淆,也没有什么真正帮助,因为我们都知道任何有能力的开发人员如果愿意,都能够阅读该代码.
JS Scripts是一回事,但是那些在IP(知识产权)上投入了数百万美元的SOA项目呢.我喜欢.net,尤其是C#,但我最近又回答了这个问题:"如果我们将这个编译好的程序交给我们的客户,他们的开发人员可以对其进行逆向工程吗?" 我已经不遗余力地对代码进行了模糊处理,但我知道对于另一位坚定的C#开发人员来说,获取代码并不需要那么多.
所以我认真地提出了这个问题,是否无法保护.net代码?
我的考虑因素如下:
我不是在敲网.但是我想要一些现实的答案,谢谢你,标记为主观和社区的问题!
什么遗传编程图书馆,无论语言如何,都拥有最活跃的社区,并且是最发达的?
我有一个带有属性和 getter 方法的类:
public Class MyClass
{
private String myValue = "foo";
public String getMyValue();
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在格式化字符串中使用 foo 的值,如下所示:
String someString = "Your value is {myValue}."
String result = Formatter.format(someString, new MyClass());
// result is now "Your value is foo."
Run Code Online (Sandbox Code Playgroud)
也就是说,我想要一些像.format上面这样的函数,它采用指定某个对象属性的格式字符串以及具有这些属性的实例,并相应地格式化字符串。
用Java可以实现这个壮举吗?
我困惑之间SPSite,SiteCollection和SPWeb?
所以我的理解是这个伪代码:
http://My_server >>> TOP Level SIte or SPWEbApplication
http://My_server/My_site >>>> Site Collection or SPSite
Run Code Online (Sandbox Code Playgroud)
现在SPSite,将引用其下的网站SPWeb.那么我们在使用时会得到什么SPWeb.Webs?
什么是子网站?
测试代码:
SPWeb mySite = SPContext.Current.Web;
SPWebCollection sites = mySite.Webs;
foreach (SPWeb subSite in sites)
{
Response.Write(SPEncode.HtmlEncode(subSite.Title) + "<BR>");
}
Run Code Online (Sandbox Code Playgroud) 假设您希望以递归方式实现广度优先搜索二叉树.你会怎么做?
是否可以仅使用调用堆栈作为辅助存储?