开发者热议GitHub代码搜索政策,最佳搜索解决方案探索

2023-12-06 16:36:51 浏览数 (3)

近日,名为koepnick 的开发者因在一台老式电脑上使用GitHub 搜索自己的存储库代码,却没有手机等设备协助验证,导致无法登录GitHub 账户,发文怒斥GitHub:如若没有登录,就无法使用搜索代码服务,与其这样不如弃用。

其实,早在今年6月,GitHub 官方便发布了一封《代码搜索现在需要登录》的公告内容,官宣除了在 GitHub.com 上全局搜索代码已经需要用户登录的政策之后,自 6 月 7 日起,这一政策将其扩展为包括存储库范围的搜索。即要访问 GitHub 的新代码搜索和代码导航的全部功能,需要创建账户或登录 GitHub.com。

而GitHub 开发者关系副总裁 Martin Woodward对于koepnick的不满,回复称这样做主要是为了帮助防止服务器被匿名的机器人请求压倒,确保可以支持 GitHub 上的开发者访问量负载。

这件发生在GitHub 上的小插曲,随即引发了大批开发者的关注和讨论。不少程序员表示开启登录操作无可厚非,“我想微软将其平台上的代码视为一种资产,因为他们可以使用它来训练可以销售的人工智能。他们不希望其他人使用他们平台上的代码做同样的事情。”但也有程序员认为GitHub要求登录以防止服务器被匿名的机器人请求压倒的设想有些天真,且间接伤害了用户体验,还有用户直接推荐了其他开源代码搜索工具取而代之。

如今,需要开发人员手动编写代码的机会少之又少,很多程序员往往选择通过搜索引擎寻找函数,并且在无数相似的函数中搜索和筛选,比较不同函数的优劣,再选择最合适的函数进行调用,但这种行为不仅耗费大量的时间和精力,而且严重依赖于开发人员个人的能力。诚如GitHub新的代码搜索比普通的搜索引擎有更多的内容,将其开启登录账户的举措也确实影响了一部分用户体验,无形中将用户推到其他代码工具中去。

在中国,飞算SoFlu软件机器人推出的专门为开发者设计的函数AI生成器,可以替代搜索引擎,根据开发者的需求提供直接可用的函数解决方案。

FuncGPT是一个专门为开发者设计的函数AI生成器,它接收自然语言输入,然后输出可以直接使用的函数解决方案。FuncGPT(慧函数)的强大之处在于它可以理解自然语言,这意味着你不需要具备很强的编程知识或熟悉各种函数和方法。只需向FuncGPT(慧函数)描述你的问题,它就会为你提供相应的解决方案。这大大降低了编程的门槛,让更多的开发者能够快速找到适合自己的函数。

作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库,从而提高开发者的编码效率。

以下是一个通过在FuncGPT(慧函数)中输入指令【函数功能:Map批量赋值

参数1:参数名称:target;参数类型:Map;参数描述:Map对象

参数2:参数名称:keyAndValue;参数类型:Object;参数描述:key值与value值,先后对应(key=2n,value=2n 1)】的示例:

代码语言:javascript复制
// 类名:MapUtil
// 函数名:bulkAssignValues
// 函数功能:批量将键值对赋值给Map对象
// POM依赖包:
// <dependency>
//     <groupId>org.apache.commons</groupId>
//     <artifactId>commons-lang3</artifactId>
//     <version>3.12.0</version>
// </dependency>
import org.apache.commons.collections4.MapUtils;
import java.util.Map;
public class MapUtil {
    /**
     * 批量将键值对赋值给Map对象
     * @param target 目标Map对象
     * @param keyAndValue 键值对,先后对应(key=2n,value=2n 1)
     */
    public static void bulkAssignValues(Map<Object, Object> target, Object... keyAndValue) {
        if (target == null) { // 检查目标Map是否为空
            throw new IllegalArgumentException("Target Map cannot be null"); // 抛出异常,目标Map不能为空
        }
        if (keyAndValue == null || keyAndValue.length % 2 != 0) { // 检查键值对参数是否为空或键值对个数是否为偶数
            throw new IllegalArgumentException("Invalid key-value pairs"); // 抛出异常,键值对参数不合法
        }
        for (int i = 0; i < keyAndValue.length; i  = 2) {
            Object key = keyAndValue[i];
            Object value = keyAndValue[i   1];
            target.put(key, value); // 将键值对赋值给目标Map对象
        }
    }
}
// 函数示例
// 批量将键值对赋值给Map对象示例
// 入参:target,目标Map对象
// 入参:keyAndValue,键值对,先后对应(key=2n,value=2n 1)
// 调用示例:
// Map<String, Integer> targetMap = new HashMap<>();
// MapUtil.bulkAssignValues(targetMap, "key1", 1, "key2", 2, "key3", 3);
// System.out.println(targetMap);
// 输出结果:例如,将键值对赋值给Map对象,结果为:{key1=1, key2=2, key3=3}
// 则输出结果为:{key1=1, key2=2, key3=3}

以上由FuncGPT(慧函数)生成的Java代码定义了一个名为MapUtil的类,其中包含一个名为bulkAssignValues的静态方法。该方法的功能是批量将键值对赋值给Map对象。

依赖包: 代码中包含一个Apache Commons Lang的依赖,版本是3.12.0。Apache Commons Lang是Apache软件基金会ASF的一个子项目,为Java提供丰富的组件库。MapUtils类来自于Apache Commons Collections,它提供了一些操作和处理Map的实用方法。

函数设计: bulkAssignValues函数接受两个参数,一个目标Map对象和一个键值对数组。函数首先检查目标Map对象是否为空,如果为空则抛出异常。接着检查键值对数组是否为空或长度是否为偶数,如果不满足条件则抛出异常。最后,通过循环遍历键值对数组,将每个键值对依次添加到目标Map对象中。

可读性: 代码的注释和变量命名都是清晰明了的,易于理解。函数的设计和命名也符合Java编码规范。

性能: 该函数没有进行任何不必要的操作,直接将输入的键值对添加到目标Map中。因此,它的性能是高效的。

错误处理: 函数在遇到非法参数时抛出IllegalArgumentException异常,符合Java的异常处理规范。

综上,在秒级支持所有类型函数创建的基础上,由于FuncGPT(慧函数)是经过代码编写最佳实践和大规模机器联合训练,对Java语法有深入的学习和理解,故生成的函数代码质量高,符合行业规范,避免了常见的代码错误和低效,相较于搜索引擎收到的demo级的代码案例,针对不同的定制化的需求场景,FuncGPT(慧函数)为开发人员提供相对精准的代码方案基础上,开发人员往往只需稍作调整,即可生成满足开发人员特定的功能需求。

0 人点赞