Open source 写得好的开源项目(用于学习)?
我们通过编写程序和学习其他程序来学习编程。 您建议哪些开源代码库/程序用于学习/改进编程Open source 写得好的开源项目(用于学习)?,open-source,Open Source,我们通过编写程序和学习其他程序来学习编程。 您建议哪些开源代码库/程序用于学习/改进编程 在引用参考资料时,请同时提及您喜欢的内容。这取决于您的兴趣,但我曾与合作过,这篇文章写得相当好,合作愉快。它是用C写的。我推荐Scott Hanselman的,他完全按照你的建议去做,那就是阅读更多的源代码来变得更好。值得一读。你会发现很多例子。但是吉姆·巴克说过,这取决于你的兴趣。我从源代码中学到了大量的“东西”。如果有人有一份,他在那里写了哪些开源项目 @Avinash:如果你想了解更多关于编程的一般
在引用参考资料时,请同时提及您喜欢的内容。这取决于您的兴趣,但我曾与合作过,这篇文章写得相当好,合作愉快。它是用C写的。我推荐Scott Hanselman的,他完全按照你的建议去做,那就是阅读更多的源代码来变得更好。值得一读。你会发现很多例子。但是吉姆·巴克说过,这取决于你的兴趣。我从源代码中学到了大量的“东西”。如果有人有一份,他在那里写了哪些开源项目
@Avinash:如果你想了解更多关于编程的一般知识,我推荐Spinellis的代码阅读和代码质量。他们有各种项目的代码样本,我相信所有的自由和开放源码软件,所以你不仅可以阅读它们,还可以去获取书中讨论的版本和最新版本,从中阅读更多代码并学习 这是一个很好的学习方法 我知道由于多体系结构和大量的代码,可能很难深入研究,但是有一些非常好的文章可以慢慢深入,比如 通过研究特定主题,我学到了很多东西,比如FAT驱动程序实现和文件系统抽象。我可以推荐。这是一系列适用于Windows、OS X和Linux(以及java小程序)的益智游戏(扫雷游戏、数独游戏、十五)。体系结构非常简单:有一个前端接口,有三个实现(每个平台一个),一个后端接口,每个游戏一个实现(我已经给出了三个示例),还有一个中间接口,可以让他们一起交谈,进行序列化和其他整洁的事情
基本上,这是很好的OOP。用C编写。它很容易为(我实现了填充和射程游戏)做出贡献,因为它有很好的文档记录,并且易于阅读。相对较小,但有足够的复杂性,可以从中学习,我的投票是: Apache的日志框架
它的源代码可读性很强,“跨平台”[可在:.NET 1.0、1.1、2.0、CF、MONO…]上编译,因此对“跨平台”C#开发课程很有价值…我发现的清晰简洁的源代码中最好的一块就是源代码。无论您是否喜欢Javascript,它都是反对“代码就是文档”主张的有力理由 有很多评论,但它不是ascii艺术作品,你可以看到清晰的推理——这些评论让你确切地知道要实现什么 例如():
(函数(){
变量
//将加速对窗口的引用,并允许搜索其名称。
window=这个,
//将加速对未定义对象的引用,并允许对其名称进行搜索。
未定义,
//覆盖时映射到jQuery
_jQuery=window.jQuery,
//覆盖时映射到$
_$=窗口。$,
jQuery=window.jQuery=window.$=函数(选择器,上下文){
//jQuery对象实际上只是init构造函数“增强的”
返回新的jQuery.fn.init(选择器,上下文);
},
//检查HTML字符串或ID字符串的简单方法
//(我们对这两个方面都进行了优化)
quickExpr=/^[^]*$|^([\w-]+)$/,,
//它是一个简单的选择器吗
isSimple=/^.[^:\[\,]*$/;
jQuery.fn=jQuery.prototype={
init:函数(选择器、上下文){
//确保提供了选择
选择器=选择器| |文档;
//句柄$(DomeElement)
if(selector.nodeType){
此[0]=选择器;
这个长度=1;
this.context=选择器;
归还这个;
}
//处理HTML字符串
如果(选择器的类型==“字符串”){
//我们处理的是HTML字符串还是ID?
var match=quickExpr.exec(选择器);
//验证匹配,并且没有为#id指定上下文
if(匹配&(匹配[1]| |!上下文)){
//句柄:$(html)->$(数组)
if(匹配[1])
选择器=jQuery.clean([match[1]],上下文);
//句柄:$(“#id”)
否则{
var elem=document.getElementById(匹配[3]);
//处理IE和Opera返回项目的情况
//按名称而不是ID
if(elem&&elem.id!=匹配[3])
返回jQuery().find(选择器);
...
的代码是典型的,并且可以从它在现代硬件上实现极端性能所做的工作中学到很多东西
值得一读的是它的架构,还有。开发人员的博客上也有很多很好的阅读材料,特别是它教了很多关于现代CPU和内存如何工作的东西。大多数评论本可以避免。“代码就是文档”不是在代码中乱扔注释,真的。马丁·福勒(Martin fowler)在我读到注释是代码气味时启发了我。我喜欢这些注释中的大多数。它们符合我的注释政策,不是说我在做什么,而是说为什么。@sebstian确切地说,如果没有注释,你将不知道为什么要使用
window=this
。@r帕塔比:你是指这个吗?他没有提到任何关于评论的内容,只是清楚的代码是自我记录的。
(function(){
var
// Will speed up references to window, and allows munging its name.
window = this,
// Will speed up references to undefined, and allows munging its name.
undefined,
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
jQuery = window.jQuery = window.$ = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
},
// A simple way to check for HTML strings or ID strings
// (both of which we optimize for)
quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
// Is it a simple selector
isSimple = /^.[^:#\[\.,]*$/;
jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {
// Make sure that a selection was provided
selector = selector || document;
// Handle $(DOMElement)
if ( selector.nodeType ) {
this[0] = selector;
this.length = 1;
this.context = selector;
return this;
}
// Handle HTML strings
if ( typeof selector === "string" ) {
// Are we dealing with HTML string or an ID?
var match = quickExpr.exec( selector );
// Verify a match, and that no context was specified for #id
if ( match && (match[1] || !context) ) {
// HANDLE: $(html) -> $(array)
if ( match[1] )
selector = jQuery.clean( [ match[1] ], context );
// HANDLE: $("#id")
else {
var elem = document.getElementById( match[3] );
// Handle the case where IE and Opera return items
// by name instead of ID
if ( elem && elem.id != match[3] )
return jQuery().find( selector );
...