[
https://issues.apache.org/jira/browse/TINKERPOP-1552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16029239#comment-16029239
]
Jorge Bay commented on TINKERPOP-1552:
--------------------------------------
I had some time to look into [~Florian Hockmann] contribution and it's looking
really good!
Before going into further technical detail, I would like to discuss some high
level decisions:
1) Naming convention
The proposed C# GLV uses pascal case, as opposed to lower camel case, for
example:
{code}
var traversal = g.V().Has("name","marko").OutE("created")
{code}
Instead of lower camel case
{code}
var traversal = g.V().has("name","marko").outE("created")
{code}
This convention is used in .NET for properties and method declarations.
Pros: it feels very natural for .NET devs
Cons: it's different from Gremlin conventions and it won't allow "copy/pasting"
from traversal samples.
For the Python GLV, we went for Gremlin conventions instead of more pythonesque
{{snake_case}}. I think that now is a good moment to find a general rule:
should we always use Gremlin conventions for GLVs? (think coding languages with
different name conventions, ie: C#, Ruby, PHP, Go, ...)
I'm +1 on using Gremlin conventions.
A similar note goes for {{ITraversal}}, the traversal interface with {{I}}
prefix, common in .NET world.
2) Generics
Like the Java implementation, traversal interfaces and classes should be
generic, it should be {{Traversal<S, E>}}, {{DefaultTraversal<S, E>}} and so on.
3) Traversal should be iterable
Like the Java and Python implementations, the traversal should be iterable
allowing {{foreach}} and other built-in enumeration mechanism.
In the C# case, it should implement {{IEnumerable<E>}} interface.
> C# Gremlin Language Variant
> ---------------------------
>
> Key: TINKERPOP-1552
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1552
> Project: TinkerPop
> Issue Type: Improvement
> Components: language-variant
> Affects Versions: 3.2.3
> Reporter: Jorge Bay
>
> It would be nice to have a C# GLV that runs under .NET Framework 4.5+ and
> .NET Core.
> The maven build could use the Exec Maven Plugin to exec .NET Core's [dotnet
> test|https://www.microsoft.com/net/core#macos] command.
> Some requirements, from the mailing list (edited):
> {quote}
> 1. The GLV should keep in line with class/method names of the java API
> where possible to ensure consistency of feel across languages.
> 2. There needs to be adequate tests (we're still discussing the approach to
> testing GLVs and i think that needs to be tackled sooner than later as more
> GLVs start to come in). Those tests should produce xunit style output
> unless there is some good reason not to.
> 3. There needs to be adequate documentation (e.g. Reference docs)
> 4. The build/deploy process needs to be bound to maven which might be one of
> the trickier bits to deal with.
> {quote}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)